2015-03-20 2 views
1

Извините, что беспокою вас. Недавно я пытался создать очень простой симулятор java cointoss. вот кодЧто нельзя разрешить головам для переменной?

import java.util.Random; 
import java.util.Scanner; 


public class CoinToss { 
static String choice; 
static String answer; 
static Scanner user_input = new Scanner(System.in); 

public static void main(String[] args){ 
    System.out.print("Heads or Tails?"); 
    choice = user_input.nextLine(); 
    Random rand = new Random(); 
    int side = rand.nextInt(2); 
    if (side == 0){ 
     answer = Heads; 
     System.out.println("Heads"); 
     if (answer == choice) { 
      System.out.println("You win!"); 
     } 
     else { 
      System.out.println("You lose!"); 
     } 
    } 
    else if (side == 1){ 
     answer = Tails; 
     System.out.println("Tails"); 
     if (answer == choice) { 
      System.out.println("You win!"); 
     } 
     else { 
      System.out.println("You lose!"); 
     } 

    } 
} 
} 

Когда я пытаюсь построить и запустить я получаю сообщение об ошибке, говорящее

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
Heads cannot be resolved to a variable 
Tails cannot be resolved to a variable 
+1

Вы сказали, что 'answer' имеет тип String, поэтому присваиваемое значение должно быть заключено в двойные кавычки, такие как' answer = "Heads" ' – Arkantos

+1

Кроме того, сравните строки, используя' equals() ', а не' == '. – RealSkeptic

ответ

1

Это означает, что вы имеете в виду с не существующей переменной:

answer = Heads; 

Вы, вероятно, означало:

answer = "Heads"; 

Кстати, вы должны также изменить answer == choice к answer.equals(choice), если вы хотите, чтобы ваше сравнение строк работать ,

+0

@emtekcan Вы прочитали то, что я написал относительно использования 'answer.equals (choice)'? – Eran

+0

Жаль, что я хотел ответить на другой комментарий: P. Я только что прочитал и попробовал. Он работает так, как я хочу. Спасибо огромное! – emtekcan

4

так, как вы написали answer = Heads; средство присвоить переменной Heads переменной answer.

Вместо этого вы, вероятно, захотите answer = "Heads"; и answer = "Tails";.

0

Именно эта линия:

answer = Heads; 

Вы присваивая значение Heads переменной answer. Поскольку после Heads нет скобок (т. Е. Это не Heads()), она должна ссылаться на переменную: либо локальную переменную, либо статическую переменную, либо переменную экземпляра.

Но нигде вы не объявляете такую ​​переменную, поэтому компилятор не может понять, что вы имеете в виду (то есть, он не может разрешить имя переменной для переменной).

+0

Большое спасибо за помощь. Единственная проблема в том, что если я добавлю скобки, я получаю такой результат: голова или хвосты? Головы Головы Вы проигрываете! Несмотря на то, что я написал главы, а рандомизатор выбрал головы, я потерял – emtekcan

0

Головки и хвосты не определены. Поскольку «Ответ» - это строка, вы можете использовать «Heads» и «Tails», когда вы назначаете результат.

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