banansplitt™ Skrevet 8. mai 2013 Del Skrevet 8. mai 2013 Oppgaven var først å lage en metode getInt som ikke skal returnere før et heltall er skrevet inn. Jeg testet metoden og den fungerte fint. Neste oppgave var så å "implementere" denne i en oppgave fra tidligere. Jeg klippet og limte inn, men jeg får kun error? Slik skal et spill egentlig se ut: Guess number: 5 Higher! Guess number: 50 Lower! Guess number: 23 Higher! ........ ........ ........ Slik ser det ut; den tar imot et tall, sjekker om det skal være lavere eller høyere, dermed skriver den ut "Guess number:" 2 ganger og så en error. Guess number: 5 Higher! Guess number: Guess number: Exception in thread "main" java.util.NoSuchElementException: No line found at java.util.Scanner.nextLine(Unknown Source) at forelesning.Oppgave03.getInt(Oppgave03.java:65) at forelesning.Oppgave03.main(Oppgave03.java:21) package forelesning; import java.util.*; public class Oppgave03 { public static void main(String[] args) { Scanner in = new Scanner(System.in); // Declare necessary varibales int numGames = 0, totGuesses = 0; boolean newGame = true; while(newGame) { // Declare necessary varibales int correct = (int) (Math.random() * 100) + 1; int guess = 0, numGuesses = 0; // Play game until correct number is guessed while(guess != correct) { guess = getInt("Guess number: "); if(correct < guess) { System.out.println("Lower!"); } else if(correct > guess) { System.out.println("Higher!"); } numGuesses++; } // Game finishes, output results System.out.println(); System.out.println("Congratulations, you guessed the correct number!"); System.out.println("Number of guesses: " + numGuesses); System.out.println(); System.out.println("------------------------------------------------"); System.out.println(); // Keep playing? System.out.print("Play again? (y): "); in.nextLine(); if(!in.nextLine().equalsIgnoreCase("y")) newGame = false; numGames++; totGuesses += numGuesses; System.out.println(); System.out.println("------------------------------------------------"); } in.close(); // Output stats after quit System.out.println(); System.out.println("Game finished!"); System.out.println(); System.out.println("Statistics"); System.out.println("Games played: " + numGames); System.out.println("Total guesses: " + totGuesses); System.out.println("Average number of guesses: " + (double) totGuesses / numGames); } public static int getInt(String message) { Scanner in2 = new Scanner(System.in); System.out.print(message); while(!in2.hasNextInt()) { System.out.print(message); in2.nextLine(); } int n = in2.nextInt(); in2.close(); return n; } } Lenke til kommentar
Fred7555 Skrevet 8. mai 2013 Del Skrevet 8. mai 2013 (endret) Hvorfor ikke bare ha én scanner til alt? Virker tungvindt å opprette og stenge en hver gang et nytt tall skal leses inn. Om du fjerner in2.close(), så vil du ikke lenger få den samme feilen. Endret 8. mai 2013 av Fred7555 Lenke til kommentar
banansplitt™ Skrevet 8. mai 2013 Forfatter Del Skrevet 8. mai 2013 Sto i den første oppgaven at metoden skulle opprette sin egen Scanner, så da bare lot jeg det være sånn. Takk for løsningen forresten! 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å