这是一个随机数猜测游戏。如果我得到正确的答案,我的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")));
}
}
}
答案 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")));
}
}