serrghi Skrevet 11. oktober 2008 Del Skrevet 11. oktober 2008 (endret) Jeg har en metode som skal legge inn nye deltakere i en 2D tabell med poeng sum. (legger link da metoden ble litt lang) ----------------- fjernet Jeg vil at den skal begynne på poengStreng igjen dersom jeg får feilmeldinger på poengStreng inputtet, men nå så begynner den helt i begynnelsen igjen av while loopen. Er jeg nødt til å ha enda en while loop? Noen ideer/forbedringer? Endret 11. oktober 2008 av serrghi Lenke til kommentar
pgdx Skrevet 11. oktober 2008 Del Skrevet 11. oktober 2008 For det første kan du fjerne denne (skjønner du hvorfor?): true && For det andre ville jeg ha laget to private metoder som tok inn en streng (beskjed til bruker) og returnerte henholdsvis en int og en streng. For eksempel kan du lage denne metoden: private int readIntFromUser(String message, int lowerBound, int upperBound) { while (true) { String in = JOptionPane.showInputDialog(null, message + "[" + lowerBound + " - " + upperBound + "]", JOptionPane.PLAIN_MESSAGE); int result = Integer.parseInteger(in); if (result >= lowerBound && result <= upperBound) { return result; } } } Da slipper du å ha så masse kode inni hoved-while-løkken din, og all brukersjekking blir gjort i en annen metode. Merk at du kan out-source mye av denne metodekroppen til din metode private String readStringFromUser(String message);. Lenke til kommentar
serrghi Skrevet 11. oktober 2008 Forfatter Del Skrevet 11. oktober 2008 Begge input metodene er int. hvordan skal jeg gjøre det med å skrive ut feilmeldinger da? skal jeg gjøre det i de private metodene, eller kan jeg gjøre det i den metoden som jeg allerede har? Lenke til kommentar
pgdx Skrevet 11. oktober 2008 Del Skrevet 11. oktober 2008 hvordan skal jeg gjøre det med å skrive ut feilmeldinger da? skal jeg gjøre det i de private metodene, eller kan jeg gjøre det i den metoden som jeg allerede har?Jeg ville ha gjort det i de private metodene. Da kan du være sikker på at du i hovedløkken din får korrekt input, og da slipper du å ha så mye rot der.Da blir alt dette: while(true && antallDeltakereLagret < resultater.length) try{ deltakerStreng = JOptionPane.showInputDialog(null, "Oppgi deltakernummer:", "Deltakernummer", JOptionPane.PLAIN_MESSAGE); if(deltakerStreng.equals("")){ feilMelding("Ulovlig eller ingen verdi, prøv igjen.","Feil"); continue; } deltakerNr = Integer.parseInt(deltakerStreng); if(deltakerNr < 0){ feilMelding("Ulovlig eller ingen verdi, prøv igjen.","Feil"); continue; } poengStreng = JOptionPane.showInputDialog(null, "Oppgi poengsum for deltaker " + deltakerNr + ":\n", "Poengsum", JOptionPane.PLAIN_MESSAGE); if(poengStreng.equals("")){ feilMelding("Ulovlig eller ingen verdi, prøv igjen.","Feil"); continue; } poengSum = Integer.parseInt(poengStreng); if(poengSum > 10 || poengSum < 0){ feilMelding("\"" + poengSum + "\"" + " er ikke i intervallet [0-10]! Prøv igjen.", "Ikke Lovlig Poengsum"); } forkortet til: int deltakerNummer = getIntFromUser("Skriv inn deltakernummer", 0, 100); // antar 100 er høyeste nummer int poengSum = getIntFromUser("Oppgi poengsum", 0, 10); Lenke til kommentar
serrghi Skrevet 11. oktober 2008 Forfatter Del Skrevet 11. oktober 2008 (endret) Har prøvd meg litt frem nå og komt frem til dette: sensur dette har jeg nå i den tidligere metoden: sensur der første parameter signaliserer om jeg vil ha et intervall input eller ikke. Men det funker ikke som det skal, ser ikke helt hvorfor. Endret 17. oktober 2008 av serrghi Lenke til kommentar
pgdx Skrevet 11. oktober 2008 Del Skrevet 11. oktober 2008 Siden du ikke sier hva som ikke funker, kan jeg bare anta at det er dette: if(intervall == 1 && result >= 0 && result <= 10){ return result; Når returnerer du noe når du IKKE vil ha intervall? Lenke til kommentar
serrghi Skrevet 11. oktober 2008 Forfatter Del Skrevet 11. oktober 2008 (endret) jeg vil ha det slik at dersom intervall variabelen er 1/true så skal det gi feilmelding dersom result er utenfor intervallet, eller gi meg resultatet dersom det var ok, men dersom den er 0/false så skal den bare drite i det der og gi meg resultatet. EDIT ---- Jeg fikk det til bare jeg som ikke tenkte så langt. Tusen takk for hjelpen! Endret 11. oktober 2008 av serrghi 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å