我一直在尝试创建一个程序,如果用户在candy
或C
中键入扫描程序,那么程序会执行一些代码,尽管我很难比较这两个变量。
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()
方法。
答案 0 :(得分:2)
如果您的目的是允许用户键入"candy"
或"C"
,即使修复了编译器错误,您的代码也无法完成工作。它正在检查C
的第一个字符,这意味着它会匹配以<{1}}开头的任何用户输入,包括C
,Charlie
等如果那不是您想要的,那么您必须将整个字符串与Caddywumpus
进行比较并忘记"C"
:
charAt(0)
另一方面,如果您确实希望允许以C开头的任何输入,您需要在问题中明确说明。
答案 1 :(得分:1)
几个错误,需要纠正。虽然equalsIgnoreCase
足以匹配candy
或Candy
或CANDY
,但** 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' )
编辑:仅处理字符输入