Bruno Mars Skrevet 31. januar 2010 Del Skrevet 31. januar 2010 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
DeadManWalking Skrevet 31. januar 2010 Del Skrevet 31. januar 2010 Det er vel enklere å anta tall som input også catcher du exception vist noe annet skjer? Lenke til kommentar
Unlimited LTD Skrevet 1. februar 2010 Del Skrevet 1. februar 2010 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
duckers Skrevet 1. februar 2010 Del Skrevet 1. februar 2010 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
quantum Skrevet 1. februar 2010 Del Skrevet 1. februar 2010 Ikke det at det andre eksempelet ikke fungerer men.. du endrer nå fortsatt indexen inni for-løkka da. Men det må man jo nesten om man vil bli ferdig ... quack quack Pointet må jo være at det skal være begripelig når/om løkka terminerer. Lenke til kommentar
quantum Skrevet 1. februar 2010 Del Skrevet 1. februar 2010 While != For.. så sannelig, må visst ha brills ... Lenke til kommentar
MailMan13 Skrevet 2. februar 2010 Del Skrevet 2. februar 2010 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? Lenke til kommentar
quantum Skrevet 2. februar 2010 Del Skrevet 2. februar 2010 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
GeirGrusom Skrevet 4. februar 2010 Del Skrevet 4. februar 2010 While != For.. Det er bare syntaktisk. for(int i = 0;i < numers.Length;) ville vært synonymt med while løkken din. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå