2013-02-27 2 views
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++; 
     } 
    } 
} 
+0

[Домашнее заданию тегу является устаревшим.] (Http://meta.stackexchange.com/questions/147100/the-homework-tag-is-now-officially-deprecated) –

ответ

6

У вас неверно заглавная While. Он должен быть while (все в нижнем регистре).

См. Документацию для while.

Однако в вашем коде есть ряд других проблем.

Во-первых,, если вы проверили, что число не больше или меньше, чем оно должно, по определению быть равным. Таким образом, вы можете изменить

else (guess = r) { 

в

else 

Это счастье для вас, как guess = r не будет проверять на равенство. Вместо этого он присваивает значение rguess. Кроме того, поскольку 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. Это означает, что он всегда будет возвращать один и тот же секвенсор число чисел. Это может быть то, что вы хотите, но, если это не так, вы можете просто использовать конструктор paramaterless семян с текущим временем в миллисекундах

Random rnd = new Random(); 
2

Не капитализировать слово «пока». Случай очень важен в Java.

+0

спасибо очень – Pmike86

3
else (guess = r) { 

Измените условия в комментарии.

else { // (guess == r) 
+0

большое спасибо – Pmike86

0

guess = r - это задание, а не сравнение. В этом случае сравнение не является необходимым, как его случай по умолчанию, но для будущей ссылки guess == r - правильный способ сделать сравнение (при условии, что угадание является int или другим примитивом)

1

пучок проблем. См. Исправление ниже.

  1. Не капитализировать «Пока»
  2. если вы делаете другое, и хотите проверить еще одно условие, сделайте «еще если (...) '
  3. Вы не можете сравнить int с переменной типа «Random». Вместо этого сохраните Random.nextInt() и сравните это значение.
  4. При сравнении, убедитесь, что вы хотите, чтобы 'был равен' вы используете '==' not '='. Последний является оператором присваивания, а «==» - оператором сравнения.

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

    }

0

Изменить

Random r = new Random(101); 

в

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

Вам нужно int сравнить с догадкой. Вы используете Random, который является генератором случайных чисел. Метод RandomnextInt(int i) возвращает число от 0 (включительно) до i.

0

Найдено три вещи

1) В то время как неправильно капитализированных

2) г имеет неверный тип для сравнения с целым числом, это экземпляр "Random"

3) вы имеете в виду == и not =

Я нашел все эти ошибки, загрузив программу в Eclipse. Я предлагаю вам получить аналогичный редактор, чтобы помочь с этими проблемами!

Надеется, что это помогает

Смежные вопросы