我收到语法错误,我无法弄清楚原因。我是编程课程的介绍,所以我的知识非常有限。这是我要做的项目和我到目前为止的代码。我只是想测试它,看看我是否在正确的道路上,但我不能。任何帮助都会非常感激,所以我至少可以看到我的下一个问题是什么。哈哈。
import java.util.*;
public class project2 {
public static void main(String[] args) {
Scanner in = new Scanner (System.in);
System.out.println("Welcome, I am thinking of a number between 1-100. Take a guess!");
System.out.print("Please enter your number: ");
int guess = in.nextInt();
Random r = new Random(101);
int counter = 0;
int totalcount = 6;
While (counter != totalcount) { // being told to insert ";" and I have no clue why
if ( guess < r) {
System.out.print("You guessed " + guess);
System.out.println("Too Low");
} else if ( guess > r) {
System.out.print("You guessed " + guess);
System.out.println("Too High");
} else ( guess = r ) {
System.out.print("You guessed " + guess);
System.out.println("YOU'RE PSYCHIC!");
}
counter++;
}
}
}
答案 0 :(得分:6)
您错误地大写While
。它应该是while
(全部小写)。
请参阅while的文档。
但是,您的代码还存在许多其他问题。
首先,如果您已经测试过某个数字不大于或小于它必须的数量,那么根据定义它是相等的。因此,您可以更改
else ( guess = r ) {
到
else
这是幸运的,因为guess = r
不会测试是否平等。相反,它会将r
的值分配给guess
。此外,因为else (condition)
是语法错误。
其次您正在尝试将此行中的int
与Random
进行比较:
if ( guess < r) // r is of type Random, guess is of type Int.
您实际应该做的是使用Random
获取int,例如:
Random rnd = new Random();
int r = rnd.nextInt();
if (guess < r) // This is now valid.
第三您已将随机数生成器播种为101.这意味着它将始终返回相同的数字序列。这可能是你想要的,但如果不是,你可以使用无参数构造函数以当前时间(以毫秒为单位)播种
Random rnd = new Random();
答案 1 :(得分:3)
else ( guess = r ) {
将条件更改为评论。
else { // ( guess == r )
答案 2 :(得分:2)
不要将“while”这个词大写。案例在Java中非常重要。
答案 3 :(得分:1)
比较时,请确保您希望&#39;等于&#39;你使用&#39; ==&#39;不是&#39; =&#39;。后者是赋值运算符,而&#39; ==&#39;是比较运算符。
import java.util.Random;
import java.util.Scanner;
public class project2 {
public static void main(final String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Welcome, I am thinking of a number between 1-100. Take a guess!");
System.out.print("Please enter your number: ");
int guess = in.nextInt();
Random r = new Random(101);
int actual = r.nextInt();
int counter = 0;
int totalcount = 6;
while (counter != totalcount) { // being told to insert ";" and I have no clue why
if (guess < actual) {
System.out.print("You guessed " + guess);
System.out.println("Too Low");
}
else if (guess > actual) {
System.out.print("You guessed " + guess);
System.out.println("Too High");
}
else if (guess == actual) {
System.out.print("You guessed " + guess);
System.out.println("YOU'RE PSYCHIC!");
}
counter++;
}
}
}
答案 4 :(得分:0)
guess = r
是一项任务而非比较。在这种情况下,比较是不必要的,因为它是默认情况,但为了将来参考,guess == r
是进行比较的正确方法(假设guess是int或其他原语)
答案 5 :(得分:0)
更改
Random r = new Random(101);
到
Random random = new Random();
int r = random.nextInt(100) + 1;
您需要int
来与猜测进行比较。您正在使用Random
这是一个随机数生成器。 Random
方法nextInt(int i)
返回介于0(含)和i
之间的数字。
答案 6 :(得分:0)
找到三件事
1)虽然大写不正确
2)r是与整数比较的错误类型,它是“随机”的实例
3)你的意思是==而不是=
我通过将程序加载到Eclipse中找到了所有这些错误。我建议你找一个类似的编辑来帮助解决这些问题!
希望这有帮助