2020-06-26, 09:53
  #1
Medlem
Hej

Hoppas inte att detta blir fr luddigt men
gr nu en kurs i Java dr jag ftt i uppgift att gra ett program dr anvndaren ska kunna ange ett tal och drefter sin lder. Efter det ska jag (beroende p inom vilket intervall talet ligger) berkna en procentsats.

Har gjort en dialogruta dr anvndaren kan ange sitt tal och sen gjort s att talet rknas om till int. Drefter kommer en ja/nej-frga om ldern.

String s = JOptionPane.showInputDialog("Ange ett tal");
int tal = Integer.parseInt(s);

int s1 = JOptionPane.showConfirmDialog(null, "r du ver 35 r?", "Frga", JOptionPane.YES_NO_OPTION);


Men eftersom att anvndaren ven kan ange bokstver och olika symboler istllet fr ett tal s hade jag velat ha att det kommer upp en ruta med tex "ogiltligt tal, frsk igen" eller liknande.
Har funderat p om jag kan gra en loop men vet inte exakt hur jag ska gra?
Frskte med

for ( int i=1; i<=s.length(); i++)
{ if (s.charAt(i) >= '0' && s.charAt(i) <= '9')

int tal = Integer.parseInt(s);
else
JOptionPane.showMessageDialog(null, "Inget tal, frsk igen");

}

d jag ville att loopen skulle genomska talet och se om det var enbart siffror. Om det var ett tal s vill jag att programmet ska gra om string till int ( som jag skrev hgre upp) s att jag kan gra matematiska utrkningar. Men jag fr det inte att fungera. Om det inte r ett tal s ska en ruta visas med text.

Efter detta vill jag att loopen ska avslutas och ldersfrgan kommer och drefter berkningarna med procentsatser. Dr tnkte jag gra if-satser beroende p vilket intervall talet hamnar inom.

Ngon som vet om det gr att gra en loop som testar att det r ett giltigt tal? Har frskt ett tag nu men jag fr det inte att fungera..
Citera
2020-06-26, 10:22
  #2
Medlem
Citat:
Ursprungligen postat av GranenGran
...
d jag ville att loopen skulle genomska talet och se om det var enbart siffror. Om det var ett tal s vill jag att programmet ska gra om string till int ( som jag skrev hgre upp) s att jag kan gra matematiska utrkningar. Men jag fr det inte att fungera. Om det inte r ett tal s ska en ruta visas med text.
Ngon som vet om det gr att gra en loop som testar att det r ett giltigt tal? Har frskt ett tag nu men jag fr det inte att fungera..

Du behver inte loopa. Kr med try/catch runt Integer.parseInt(). Om du fr en exception r det inte en integer.

Vill du flasha kan du ven kra en keyboardlistener som lyssnar p tryckningar, eller en changelistener p textfltet.

Varje gng det frndras kan du kra integer.parseint p texten, och om det inte r en int kan du ha en label i rtt under dr det str "du mste skriva in en siffra", och ven disabla "ok"-knappen.
Citera
2020-06-26, 10:35
  #3
Moderator
Protons avatar
Citat:
Ursprungligen postat av GranenGran
Hej

Hoppas inte att detta blir fr luddigt men
gr nu en kurs i Java dr jag ftt i uppgift att gra ett program dr anvndaren ska kunna ange ett tal och drefter sin lder. Efter det ska jag (beroende p inom vilket intervall talet ligger) berkna en procentsats.

Har gjort en dialogruta dr anvndaren kan ange sitt tal och sen gjort s att talet rknas om till int. Drefter kommer en ja/nej-frga om ldern.

String s = JOptionPane.showInputDialog("Ange ett tal");
int tal = Integer.parseInt(s);

int s1 = JOptionPane.showConfirmDialog(null, "r du ver 35 r?", "Frga", JOptionPane.YES_NO_OPTION);


Men eftersom att anvndaren ven kan ange bokstver och olika symboler istllet fr ett tal s hade jag velat ha att det kommer upp en ruta med tex "ogiltligt tal, frsk igen" eller liknande.
Har funderat p om jag kan gra en loop men vet inte exakt hur jag ska gra?
Frskte med

for ( int i=1; i<=s.length(); i++)
{ if (s.charAt(i) >= '0' && s.charAt(i) <= '9')

int tal = Integer.parseInt(s);
else
JOptionPane.showMessageDialog(null, "Inget tal, frsk igen");

}

d jag ville att loopen skulle genomska talet och se om det var enbart siffror. Om det var ett tal s vill jag att programmet ska gra om string till int ( som jag skrev hgre upp) s att jag kan gra matematiska utrkningar. Men jag fr det inte att fungera. Om det inte r ett tal s ska en ruta visas med text.

Efter detta vill jag att loopen ska avslutas och ldersfrgan kommer och drefter berkningarna med procentsatser. Dr tnkte jag gra if-satser beroende p vilket intervall talet hamnar inom.

Ngon som vet om det gr att gra en loop som testar att det r ett giltigt tal? Har frskt ett tag nu men jag fr det inte att fungera..
Du skulle ju kunna prova med ett sdant hr trick:

Kod:
public static boolean isNumeric(String str) {
  
NumberFormat formatter NumberFormat.getInstance();
  
ParsePosition pos = new ParsePosition(0);
  
formatter.parse(strpos);
  return 
str.length() == pos.getIndex();
}

//mer kod....

String str JOptionPane.showInputDialog("Ange ett tal");
while(!
isNumeric(str)){
JOptionPane.showMessageDialog(null"Inget tal, frsk igen");
str JOptionPane.showInputDialog("Ange ett tal");

}

System.out.printl(str); //br vara ett tal nu. 

inspiration till isNumeric:

https://stackoverflow.com/questions/...umeric-in-java
Citera
2020-06-26, 13:43
  #4
Medlem
Citat:
Ursprungligen postat av RoyBatty
Du behver inte loopa. Kr med try/catch runt Integer.parseInt(). Om du fr en exception r det inte en integer.

Vill du flasha kan du ven kra en keyboardlistener som lyssnar p tryckningar, eller en changelistener p textfltet.

Varje gng det frndras kan du kra integer.parseint p texten, och om det inte r en int kan du ha en label i rtt under dr det str "du mste skriva in en siffra", och ven disabla "ok"-knappen.


Tack fr tipset! Kanske testar att flasha lite
Citera
2020-06-26, 13:44
  #5
Medlem
Citat:
Ursprungligen postat av Proton
Du skulle ju kunna prova med ett sdant hr trick:

Kod:
public static boolean isNumeric(String str) {
  
NumberFormat formatter NumberFormat.getInstance();
  
ParsePosition pos = new ParsePosition(0);
  
formatter.parse(strpos);
  return 
str.length() == pos.getIndex();
}

//mer kod....

String str JOptionPane.showInputDialog("Ange ett tal");
while(!
isNumeric(str)){
JOptionPane.showMessageDialog(null"Inget tal, frsk igen");
str JOptionPane.showInputDialog("Ange ett tal");

}

System.out.printl(str); //br vara ett tal nu. 

inspiration till isNumeric:

https://stackoverflow.com/questions/...umeric-in-java


h det sg avancerat ut Ska testa! Tack fr hjlpen
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in