Gå til innhold

[Løst]Hvordan sjekke om det du skriver inn er et tall (double)?


Anbefalte innlegg

Jeg for eksempel "number = MinEgen.lesDesimalTall();" som er i en for- løkke. Og koden fungerer fint. Men jeg vil ha med en sjekk som tester at brukeren taster inn et tall. For om bruker ikke taster et tall, eller bruker komma istedenfor punktum for å skrive inn verdier av type double så krasjer jo programmet. Har hørt om isDigit, men det fungerer vel bare til et og et tall?

Lenke til kommentar
Videoannonse
Annonse

Gjør som Algific sier. Prøv dette:

for (int i = 0; i < number.length; i++){
  try {
  System.out.println("Skriv inn et tall i posisjon " + i);
  number[i] = MinEgen.lesDesimalTall();
  } catch (Exception e){
  System.out.println("Error. Tast inn tallet på nytt.");
  i--; // Ingen ting er skrevet inn i number[i]. Må skrive inn på nytt.
  }
}

Lenke til kommentar

Det er dårlig programmeringsskikk å endre indexen inne i en for-løkke. Du burde også fange exceptions av en så lav klasse som mulig. Antar det er en "parseDouble" funksjon som benyttes i lesDesimalTall(); (Denne kaster NumberFormatException)

 

Prøv med

int i = 0;
while (i < number.length){
  try {
  System.out.println("Skriv inn et tall i posisjon " + i);
  number[i] = MinEgen.lesDesimalTall();
  i++; //Dersom en exception castes blir ikke denne linjen utført.
  } catch (NumberFormatException e){
  System.out.println("Error. Tast inn tallet på nytt.");
  }
}

 

Ikke det at det andre eksempelet ikke fungerer men..

Lenke til kommentar
Hva med...

try {
double myDouble = Double.valueOf(inputString.replace(',', '.'));
} catch (NumberFormatException ex) {
// strengen var ikke ett tall
}

Eller er det ett krav at det på død og liv må håndkodes?

Under et gitt locale er det kun en av delene som er korrekt desimal-separator og hvis man bruker støtte fra java.text.DecimalFormat.parse() til parsinga skal dette bli tatt hensyn til.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...