2

我收到一个语法错误,我不知道为什么。我正在学习编程课程,所以我的知识非常有限。这是我必须做的一个项目,也是我目前拥有的代码。我只是想测试一下,看看我是否走在正确的道路上,但我做不到。任何帮助都会非常感激,所以我至少可以看到我的下一个问题是什么哈哈。

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++;
        }
    }
}
4

7 回答 7

6

您错误地大写了While. 它应该是while(全部小写)。

查看文档while

但是,您的代码还有许多其他问题。

首先,如果您测试了一个数字不大于或小于它必须,根据定义是相等的。因此,您可以更改

else ( guess = r ) { 

else

这对你来说是幸运的,因为guess = r不会测试平等。相反,它将分配rto的值guess。另外,因为else (condition)是语法错误。

其次,您正在尝试将这一行中的inta 与 a进行比较: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();
于 2013-02-27T16:28:34.360 回答
3
else ( guess = r ) {

将条件更改为注释。

else { // ( guess == r )
于 2013-02-27T16:28:42.790 回答
2

不要将“while”一词大写。大小写在 Java 中非常重要。

于 2013-02-27T16:28:34.960 回答
1

一堆问题。请参阅下面的修复。

  1. 不要大写'While'
  2. 如果您执行 else 并想检查另一个条件,请执行 'else if (...)'
  3. 您无法将 int 与“随机”类型的变量进行比较。而是保存 Random.nextInt() 并进行比较
  4. 比较时,请确保如果要“等于”,则使用“==”而不是“=”。后者是赋值运算符,而 '==' 是比较运算符。

     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++;
        }
    
    }
    

    }

于 2013-02-27T16:32:16.727 回答
0

发现三样东西

1) 大写错误

2) r 是与整数比较的错误类型,它是“随机”的一个实例

3)你的意思是==而不是=

我通过将程序加载到 Eclipse 中发现了所有这些错误。我建议你找一个类似的编辑器来帮助解决这些问题!

希望这可以帮助

于 2013-02-27T16:36:40.760 回答
0

改变

Random r = new Random(101);

Random random = new Random();
int r = random.nextInt(100) + 1;

您需要int与猜测进行比较。您使用的Random是随机数生成器。该Random方法nextInt(int i)返回一个介于 0(含)和i独占之间的数字。

于 2013-02-27T16:35:11.730 回答
0

guess = r是分配而不是比较。在这种情况下,比较是不必要的,因为它是默认情况,但为了将来参考,guess == r是进行比较的正确方法(假设猜测是 int 或其他原语)

于 2013-02-27T16:31:28.633 回答