while循环中的语法错误

时间:2013-02-27 16:26:32

标签: java

我收到语法错误,我无法弄清楚原因。我是编程课程的介绍,所以我的知识非常有限。这是我要做的项目和我到目前为止的代码。我只是想测试它,看看我是否在正确的道路上,但我不能。任何帮助都会非常感激,所以我至少可以看到我的下一个问题是什么。哈哈。

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

7 个答案:

答案 0 :(得分:6)

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

请参阅while的文档。

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

首先,如果您已经测试过某个数字不大于或小于它必须的数量,那么根据定义它是相等的。因此,您可以更改

else ( guess = r ) { 

else

这是幸运的,因为guess = r不会测试是否平等。相反,它会将r的值分配给guess。此外,因为else (condition)是语法错误。

其次您正在尝试将此行中的intRandom进行比较:

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)

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

  1. 不要大写&#39; while&#39;
  2. 如果你做了其他事情并且想要检查另一个条件,那就做一个“否则如果(......)&#39;
  3. 您无法将int与类型&#39; Random&#39;的变量进行比较。而是保存Random.nextInt()并比较
  4. 比较时,请确保您希望&#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中找到了所有这些错误。我建议你找一个类似的编辑来帮助解决这些问题!

希望这有帮助