Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 允许脚本随时退出的重播循环_Java_Loops_Runtime Error_Replay - Fatal编程技术网

Java 允许脚本随时退出的重播循环

Java 允许脚本随时退出的重播循环,java,loops,runtime-error,replay,Java,Loops,Runtime Error,Replay,我有一个任务,让电脑生成一个介于1和100之间的数字,然后用户尝试猜测。我把它编好了,我就是不能让我的重播正常工作。它给了我一个关于索引超出范围的错误,我不知道为什么。我还需要该程序能够在游戏过程中的任何时候退出,并调用exit方法。我不知道怎么做。这是我目前的代码 import java.util.Scanner; import java.util.Random; /* Program to let user guess random generated number between 1 an

我有一个任务,让电脑生成一个介于1和100之间的数字,然后用户尝试猜测。我把它编好了,我就是不能让我的重播正常工作。它给了我一个关于索引超出范围的错误,我不知道为什么。我还需要该程序能够在游戏过程中的任何时候退出,并调用exit方法。我不知道怎么做。这是我目前的代码

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;
导入java.util.Random;
/*
让用户猜测1到100之间随机生成的数字的程序
*/
公共类Hilo
{
扫描仪扫描=新扫描仪(System.in);
Random generator=new Random();//生成数字的随机生成器
国际计算机编号;
int用户号;
整数猜测=0;
角色扮演;
再次播放;
布尔回放;
公营机构
{
计算机编号=发电机。下一个(100)+1;
}
公共void userguess()
{
如果(播放='y')
{
System.out.println(“请猜一个介于1和100之间的数字”);
usernumber=scan.nextInt();
高或低();
}
}
公共空间高或低()
{
if(usernumber==computernumber)
{
System.out.println(“干得好!你猜的数字正确!”;//检查你猜的数字是否正确
猜测=猜测+1;//猜测计数加1
}
其他的
{
if(usernumber>computernumber)//检查您的号码是否高于计算机
{
System.out.println(“您的猜测过高,请重试”);
猜测=猜测+1;//猜测计数加1
userguess();//让用户再次猜测
}
其他的
{
if(usernumber
也许这样就可以了

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;
导入java.util.Random;
/*
让用户猜测1到100之间随机生成的数字的程序
*/
公共类Hilo
{
扫描仪扫描=新扫描仪(System.in);
Random generator=new Random();//生成数字的随机生成器
国际计算机编号;
int用户号;
整数猜测=0;
弦乐演奏;
布尔回放;
公营机构
{
计算机编号=发电机。下一个(100)+1;
}
公共void userguess()
{
如果(“y”。相等信号情况(播放))
{
System.out.println(“请猜一个介于1和100之间的数字”);
字符串输入=scan.next();
如果(“e”.equalsIgnoreCase(输入))退出();
else usernumber=Integer.parseInt(输入);
高或低();
}否则,如果(“e”.equalsIgnoreCase(play))退出();
}
公共空间高或低()
{
if(usernumber==computernumber)
{
System.out.println(“干得好!你猜的数字正确!”;//检查你猜的数字是否正确
猜测=猜测+1;//猜测计数加1
}
其他的
{
if(usernumber>computernumber)//检查您的号码是否高于计算机
{
System.out.println(“您的猜测过高,请重试”);
猜测=猜测+1;//猜测计数加1
userguess();//让用户再次猜测
}
其他的
{
if(usernumberimport 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();
    }
}