我有一个制作游戏的任务,计算机生成一个介于 1 和 100 之间的数字,用户试图猜测它。我已对其进行编码,我只是无法让我的重播正常工作。它给了我一个关于索引超出范围的错误,我不知道为什么。我还需要程序能够在游戏过程中随时退出并调用方法退出。我不知道该怎么做。这是我当前的代码。
import java.util.Scanner;
import java.util.Random;
/*
Program to let user guess random generated number between 1 and 100
*/
public class Hilo
{
Scanner scan = new Scanner(System.in);
Random generator = new Random(); // Random generator to generate number
int computernumber;
int usernumber;
int guesses = 0;
char play;
char playagain;
boolean replay;
public void computerguess()
{
computernumber = generator.nextInt(100)+1;
}
public void userguess()
{
if(play == 'y')
{
System.out.println("Please guess a number between 1 and 100");
usernumber = scan.nextInt();
highorlow();
}
}
public void highorlow()
{
if(usernumber == computernumber)
{
System.out.println("Good Job! Your guessed the correct number!"); // Checks if you guessed the correct number
guesses = guesses +1; // Adds 1 to guess count
}
else
{
if(usernumber > computernumber) // Checks if your number is higher than the computers
{
System.out.println("Your guessed to high please try again");
guesses =guesses +1; // Adds 1 to guess count
userguess(); // Lets user guess again
}
else
{
if(usernumber < computernumber) // Checks if your number is less than the computers number
{
System.out.println("Your guess was to low please try again");
guesses = guesses +1;// Adds 1 to guess count
userguess(); // Lets user guess again
}
}
}
}
public void instructions() // Gives instructions on how to play
{
System.out.println("To play simply guess a number between 1 and 100. nThe computer will tell you if you are correct or inncorrect. n Press y to continue n Press e at any time to exit");
play = scan.nextLine().charAt(0);
}
public void printscore()
{
System.out.println("Your took "+guesses+" guesses to get the correct number n"); // Tells user how many guesses they took
}
public void replay() // lets user replay game
{
System.out.println("Would you like to play again? Y for yes N for no");
playagain = scan.nextLine().charAt(0);;
if(playagain =='y')
{
replay = true;
play();
}
}
public void exit()
{
System.out.println("Thanks for playing! The number was "+computernumber+"");
}
public void play()
{
instructions();
computerguess();
userguess();
printscore();
replay();
if(replay == true)
{
instructions();
computerguess();
userguess();
printscore();
replay();
}
else
{
if(replay == false)
{
System.exit(3);
}
}
}
public static void main(String[] args)
{
Hilo guess = new Hilo();
guess.play();
}
}
可能这样就可以了。
import java.util.Scanner;
import java.util.Random;
/*
Program to let user guess random generated number between 1 and 100
*/
public class Hilo
{
Scanner scan = new Scanner(System.in);
Random generator = new Random(); // Random generator to generate number
int computernumber;
int usernumber;
int guesses = 0;
String play;
boolean replay;
public void computerguess()
{
computernumber = generator.nextInt(100)+1;
}
public void userguess()
{
if("y".equalsIgnoreCase(play))
{
System.out.println("Please guess a number between 1 and 100");
String input = scan.next();
if("e".equalsIgnoreCase(input)) exit();
else usernumber = Integer.parseInt(input);
highorlow();
}else if("e".equalsIgnoreCase(play)) exit();
}
public void highorlow()
{
if(usernumber == computernumber)
{
System.out.println("Good Job! Your guessed the correct number!"); // Checks if you guessed the correct number
guesses = guesses +1; // Adds 1 to guess count
}
else
{
if(usernumber > computernumber) // Checks if your number is higher than the computers
{
System.out.println("Your guessed to high please try again");
guesses =guesses +1; // Adds 1 to guess count
userguess(); // Lets user guess again
}
else
{
if(usernumber < computernumber) // Checks if your number is less than the computers number
{
System.out.println("Your guess was to low please try again");
guesses = guesses +1;// Adds 1 to guess count
userguess(); // Lets user guess again
}
}
}
}
public void instructions() // Gives instructions on how to play
{
System.out.println("To play simply guess a number between 1 and 100. nThe computer will tell you if you are correct or inncorrect. n Press y to continue n Press e at any time to exit");
play = scan.next();
}
public void printscore()
{
System.out.println("Your took "+guesses+" guesses to get the correct number n"); // Tells user how many guesses they took
}
public void replay() // lets user replay game
{
System.out.println("Would you like to play again? Y for yes N for no");
String input = scan.next();
if("y".equalsIgnoreCase(input))
{
replay = true;
play();
}
}
public void exit()
{
System.out.println("Thanks for playing! The number was "+computernumber+"");
System.exit(3);
}
public void play()
{
if(replay == false)
{
exit();
}
instructions();
computerguess();
userguess();
printscore();
replay();
}
public static void main(String[] args)
{
Hilo guess = new Hilo();
guess.replay = true;
guess.play();
}
}
只需尝试此代码(我想这应该有效 - 更改已使用更改代码注释:找到"更改"作为关键字(:
import java.util.Scanner;
import java.util.Random;
/*
Program to let user guess random generated number between 1 and 100
*/
public class Hilo
{
Scanner scan = new Scanner(System.in);
Random generator = new Random(); // Random generator to generate number
int computernumber;
int usernumber;
int guesses = 0;
char play;
char playagain;
//boolean replay;
//Change Code : Change No. 4 : Start
boolean replay = true;
//Change Code : Change No. 4 : End [Refer change No 5. for WHY?]
public void computerguess()
{
computernumber = generator.nextInt(100)+1;
}
public void userguess()
{
if(play == 'y')
{
/*
Your Code
usernumber = scan.nextInt();
highorlow();
*/
//Change Code : Change No. 1 : Start
boolean correctNumber = false;
while (!correctNumber) { // loop is used to ask user for a correct input
// this statment moved from above into the loop
System.out.println("Please guess a number between 1 and 100");
String inputFromUser = scan.next();
try{
usernumber = Integer.parseInt(inputFromUser);
correctNumber = true;
} catch (NumberFormatException e) {
if(inputFromUser.equals("e")) { // Then user want to exit the game
exit(); // call the exit method
} else {
System.out.println(" Please input a correct number Please !!! ");
}
}
}
//Change Code : Change No. 1 : End
} else {
exit();
}
}
public void highorlow()
{
if(usernumber == computernumber)
{
System.out.println("Good Job! Your guessed the correct number!"); // Checks if you guessed the correct number
guesses = guesses +1; // Adds 1 to guess count
}
else
{
if(usernumber > computernumber) // Checks if your number is higher than the computers
{
System.out.println("Your guessed to high please try again");
guesses =guesses +1; // Adds 1 to guess count
//Change Code : Change No. 7 : Because we added userguess in the loop
//userguess(); // Lets user guess again
}
else
{
if(usernumber < computernumber) // Checks if your number is less than the computers number
{
System.out.println("Your guess was to low please try again");
guesses = guesses +1;// Adds 1 to guess count
//Change Code : Change No. 7 : Because we added userguess in the loop
//userguess(); // Lets user guess again
}
}
}
}
public void instructions() // Gives instructions on how to play
{
System.out.println("To play simply guess a number between 1 and 100. nThe computer will tell you if you are correct or inncorrect. n Press y to continue n Press e at any time to exit");
play = scan.next().charAt(0);
}
public void printscore()
{
System.out.println("Your took "+guesses+" guesses to get the correct number n"); // Tells user how many guesses they took
}
public void replay() // lets user replay game
{
System.out.println("Would you like to play again? Y for yes N for no");
playagain = scan.next().charAt(0);
if(playagain =='y')
{
replay = true;
guesses = 0; // If you play again guesses will become zero
play();
}
//Change Code : Change No. 2 : Start
else {
replay = false; // Only In case of Y it will continue
}
//Change Code : Change No. 2 : End
}
public void exit()
{
System.out.println("Thanks for playing! The number was "+computernumber+"");
//Change Code : Change No. 3 : Start
System.exit(3); // Whenever exit will be called user will be moved out of the application
//Change Code : Change No. 3 : End
}
public void play()
{
//Change Code : Change No. 5 : Start
/*instructions();
computerguess();
userguess();
printscore();
replay();*/
//Change Code : Change No. 5 : End [Here we do not require this code if we make replay by default true]
if(replay == true)
{
instructions();
computerguess();
//Change Code : Change No. 6 : Start - User must be given multiple guesses
while(true) {
userguess();
highorlow();
if(usernumber == computernumber) {
break;
}
}
//Change Code : Change No. 6 : End
printscore();
replay();
}
else
{
if(replay == false)
{
System.exit(3);
}
}
}
public static void main(String[] args)
{
Hilo guess = new Hilo();
guess.play();
}
}