2013-10-28 3 views
0

Я новичок в Java и учебе - так извините потенциально глупый вопрос, что это может быть!Проблема с несовместимыми типами

Это простая игра Бумага Рок Ножницы ...

Использование BlueJ я получаю эту ошибку;

"несовместимые типы"

При выполнении этого кода;

import comp102.*; 

import java.util.Scanner; 


public class RPS{ 

    String paper = "paper"; 
    String rock = "rock"; 
    String scissors = "scissors";  

public void playRound(){ 

     String paper = "paper"; 
     String rock = "rock"; 
     String scissors = "scissors";  

     System.out.print ('\f'); // clears screen 
     Scanner currentUserSelection = new Scanner(System.in); 

     String enterText = null; 
     System.out.println("Make your Selection; Paper, Rock or Scissors: "); 
     enterText = currentUserSelection.next(); 

     System.out.println("enterText = " + enterText); 

     if(enterText = paper){ 
      System.out.println("the IF Stmt is working"); 
     } 

    } 

Ошибка со ссылкой на эту линию "если (enterText = бумага) {"

Большое спасибо

+0

Спасибо за помощь :-) –

+0

Добро пожаловать. Если ваша проблема решена, вы можете пометить один из нижеприведенных ответов, как принято, см. Эту ссылку [Как работает прием ответа?] (Http://meta.stackexchange.com/q/5234/203266) –

ответ

0

Использование

if(enterText == paper) 

вместо

0

Изменить Вы if{..} условие как

if(enterText.equals(paper)){ 
    System.out.println("the IF Stmt is working"); 
} 

Поскольку вы назначаете значение в условии if. Поэтому он недействителен.

В случае условие вы должны проверить, как это правда или ложь только.

Синтаксис для if(){..}

if(true or false) { 
    //body 
} 
1

Вы пытаетесь присвоить значение в if которых не допускается

if(enterText = paper) //here if expects expression which evaluates to boolean 

Изменение к,

if(enterText == paper) 

language specs jls-14.9 С

Оператор if позволяет условное выполнение оператора или условный выбор двух операторов, выполняющих одно или другое, но не оба.

Выражение должно иметь тип boolean или Boolean, или возникает ошибка времени компиляции.

== Вместо использования оператора String#equals сравнить строку.

if(enterText.equals(paper)) //this will compare the String values 

Смотрите также

0
if(enterText = paper){ 
      System.out.println("the IF Stmt is working"); 
} 

вы должны использовать == для проверки равенства. Но так как вы имеете дело со строками, используйте метод equals()

например.

if(enterText.equals(paper)){ 
     System.out.println("the IF Stmt is working"); 
} 
0
if(enterText = paper){ 
    System.out.println("the IF Stmt is working"); 
} 

Здесь вы используете = То есть оператор присваивания.

Где == - проверка равенства.

Более в Java, чтобы проверить равенство строк, вы должны использовать equals()

Причина:Why doesn’t == work on String?

Так что ваш код становится,

if(enterText.equals(paper)){ 
     System.out.println("the IF Stmt is working"); 
    } 
0
if(enterText = paper){ 
     System.out.println("the IF Stmt is working"); 
    } 

должен быть

if(enterText == paper){ 
     System.out.println("the IF Stmt is working"); 
    } 
Смежные вопросы