二元运算符的坏操作数类型' ||'错误

时间:2016-05-16 04:52:29

标签: java

我一直在尝试创建一个程序,如果用户在candyC中键入扫描程序,那么程序会执行一些代码,尽管我很难比较这两个变量。

import java.util.Scanner;

public class StringOrChar
{
public static void main(String[] args)
{
    System.out.println("Guess a word or character");
    Scanner keyboard = new Scanner(System.in);
    String input;
    input = keyboard.nextLine();

    char c = input.charAt(0);

    if (input.equalsIgnoreCase("candy") || c = "C")
    {
        System.out.println("You guessed correctly.");
    }
    else
    {
        System.out.println("Try again...");
    }


}
}

运行程序后,我收到错误"二元运算符的坏操作数类型' ||' "虽然我对如何修复它毫无头绪。我知道我可以使用

input.equals("C")

但我想知道如何使用charAt()方法。

3 个答案:

答案 0 :(得分:2)

如果您的目的是允许用户键入"candy""C",即使修复了编译器错误,您的代码也无法完成工作。它正在检查C的第一个字符,这意味着它会匹配以<{1}}开头的任何用户输入,包括CCharlie等如果那不是您想要的,那么您必须将整个字符串与Caddywumpus进行比较并忘记"C"

charAt(0)

另一方面,如果您确实希望允许以C开头的任何输入,您需要在问题中明确说明。

答案 1 :(得分:1)

几个错误,需要纠正。虽然equalsIgnoreCase足以匹配candyCandyCANDY,但** candy

中的任何大写/小写字母

1。)c = "C" 是分配而非比较

2。)c此处为char,因此需要将char与char 进行比较,不使用字符串。所以写c == 'C'

代码应如下所示。

<强>代码

public static void main(String[] args) {
        System.out.println("Guess a word or character");
        Scanner keyboard = new Scanner(System.in);
        String input;
        input = keyboard.nextLine();

        char c = input.charAt(0);

        if (input.equalsIgnoreCase("candy") || c == 'C') {
            System.out.println("You guessed correctly.");
        } else {
            System.out.println("Try again...");
        }
    }

<强>输出继电器

1。)用户类型C

Guess a word or character
C
You guessed correctly.

2。)用户类型c

Guess a word or character
c
Try again...

3.)用户输入candy或Candy

Guess a word or character
candy
You guessed correctly.

答案 2 :(得分:0)

您只是不需要任何其他检查

if (input.equalsIgnoreCase("candy") || c == 'C' ) 

编辑:仅处理字符输入