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");
        }

    }

错误是指这一行“if(enterText = paper){”

非常感谢

4

6 回答 6

1

您正在尝试分配if不允许的值

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

改成,

if(enterText == paper)

来自语言规范 jls-14.9

if 语句允许有条件地执行一个语句或有条件地选择两个语句,执行一个或另一个但不能同时执行。

Expression 必须具有 boolean 或 Boolean 类型,否则会发生编译时错误。

而不是==运算符使用String#equals来比较字符串。

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

也可以看看

于 2013-10-28T05:57:11.960 回答
0
    if(enterText = paper){
        System.out.println("the IF Stmt is working");
    }

应该

    if(enterText == paper){
        System.out.println("the IF Stmt is working");
    }
于 2013-10-28T06:06:39.193 回答
0

利用

if(enterText == paper)

反而

于 2013-10-28T05:56:14.940 回答
0

if{..}将您的条件更改为

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

因为您在 if 条件内赋值。所以是无效的。

在 if 条件下,您必须仅检查它是true还是false

语法_if(){..}

if(true or false) {
  //body
}
于 2013-10-28T05:56:49.763 回答
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");
 }
于 2013-10-28T05:57:55.413 回答
0
if(enterText = paper){
  System.out.println("the IF Stmt is working");
}

在这里,您使用= 的是赋值运算符。

== 检查平等在哪里。

更多在java中检查你应该使用的字符串的相等性equals()

原因:为什么 == 不能在 String 上工作?

所以你的代码变成了,

if(enterText.equals(paper)){
      System.out.println("the IF Stmt is working");
    }
于 2013-10-28T05:58:13.450 回答