如果其他语句不能正常工作

时间:2019-10-22 15:48:54

标签: java

这是一个随机数猜测游戏。如果我得到正确的答案,我的if / else语句将不起作用。我还想给用户三个机会,以使答案正确。我是编程新手,不知道该怎么做。任何帮助表示赞赏。

package FinalProject;
import java.util.Random;
import java.util.Scanner;

public class test {
    public static void main(String args[]) {
        Scanner s = new Scanner(System.in);
        System.out.println("Enter a nickname");

        String name = s.nextLine();
        Scanner kbReader = new Scanner(System.in);
        System.out.println("Enter a number between 1 and 15");

        int number = kbReader.nextInt();
        Random randomNumber = new Random();
        int[] arr = new int[1];

        for (int x = 0; x < arr.length; x++) {
            arr[x] = (int) (Math.random() * 15);
            System.out.println("The number is:" + arr[x]);
            int i = 0;
            String quit;
            do {
                if (x == number) {
                    System.out.println("You win! " + name);
                } else {
                    System.out.println("You lose " + name);
                }
                System.out.println("To quit the program enter q ");
                Scanner q = new Scanner(System.in);
                quit = q.nextLine();

            } while (!quit.equals(("q")));
        }
    }
}

3 个答案:

答案 0 :(得分:1)

您需要使用

if(arr[x] == number)

而不是if(x == number),因为这里x是0,这不等于您的randomNumber,而arr [x]则可以。

答案 1 :(得分:1)

您的代码似乎非常复杂。 我了解您会得到一个随机数,并且允许用户猜测三遍。然后,如果错了,则用户可以退出或使用新的随机数和三下尝试再开始新游戏

检查以下代码。我将解释代码下方的大部分块。

 public static void main(String args[]) {
    Scanner s = new Scanner(System.in);
    System.out.println("Enter a nickname");
    String name = s.nextLine();

    while(true) {
        int tries=0;
        int randomNumber = (int) (Math.random() * 15)+1; 
        while (tries < 3) {

            System.out.println("Enter a number between 1 and 15");
            int number = Integer.parseInt(s.nextLine());
            if (randomNumber == number) {
                System.out.println("You win! " + name);
                break;
            } else {
                System.out.println("You lose " + name);
            }
            tries++;
        }
        System.out.println("The number is:" + randomNumber);
        System.out.println("To quit the program enter q ");
        String quit = s.nextLine();
        if ("q".equals(quit)) {
            break;
        }
    }
}

通常,您可以使用一个扫描仪读取每个用户的输入。当nextInt读取直到下一个标记时,最好一次读取一行。代替nextInt()进行nextLine()并将字符串解析为int-> int number = Integer.parseInt(s.nextLine());

我无法理解数组的用法,在我的示例中,我使用的是try整数,每次进行猜测时都会增加。 while循环运行直到尝试次数等于3为止,因此用户已经完成了0,1,2次尝试(3次尝试)。

外部循环while(true)永远运行游戏,直到用户输入为'q'为止,在该循环中断并结束游戏。

在游戏的while循环内,从Math.random()中获取一个randomNumber,并在if中针对该特定输入验证用户的输入。请注意,如果要获取1-15之间的随机数,则应使用int randomNumber = (int) (Math.random() * 15)+1;,因为Math.random()* 15返回0-14之间的随机数。

您不希望游戏询问是否猜出了正确的数字,因此请在“您赢了” System.out之后添加break;。这样,内部循环结束,并且要求用户退出还是退出。

如果尝试次数增加到3,则游戏会打印正确的数字,并要求用户输入q退出程序。您读了这行,如果 "q".equals(quit)打破了外部循环并退出。如果用户按任何其他文本,则外循环继续,将trys设置为0,采用新的随机数,依此类推。

已更新:代码更改为在一个随机数中支持3个猜测,并在3个猜测未正确完成后退出消息。

输出带有3个错误的猜测:

Enter a nickname
joe
Enter a number between 1 and 15
2
You lose joe
Enter a number between 1 and 15
3
You lose joe
Enter a number between 1 and 15
4
You lose joe
The number is:12
To quit the program enter q 
q

以正确的猜测输出:

Enter a nickname
Joe
Enter a number between 1 and 15
1
You lose Joe
Enter a number between 1 and 15
2
You win! Joe
The number is:2
To quit the program enter q 

答案 2 :(得分:0)

您已经将数组的大小提到为rbenv,因此我建议您不要使用数组。请改用非数组变量。不过,如果您希望使用数组,则应将其比较为1

您似乎希望程序表现如下:

if(arr[x] == number)

示例运行:

import java.util.Scanner;

public class Test {
    public static void main(String args[]) {
        Scanner s = new Scanner(System.in);

        System.out.print("Enter a nickname: ");
        String name = s.nextLine();

        String quit = "";
        int number, x, count=1;
        do {
            System.out.print("Enter a number between 1 and 15: ");
            number = s.nextInt();

            x = (int) (Math.random() * 15);
            System.out.println("The random number is: " + x);
            if (x == number) {
                System.out.println("You win, " + name+"!");
            } else {
                System.out.println("You lose, " + name+"!");
            }
            if (count==3)
                break;
            count++;            
            System.out.print("To quit the program enter q: ");
            s = new Scanner(System.in);
            quit = s.nextLine();
        } while (!quit.equals(("q")));
    }
}