0
Scanner input = new Scanner(System.in);
System.out.println("You are in a small room.");
String op1 = input.nextLine();
    if(op1 == ("look at surroundings" != null || "surroundings" != null || "look at surroundings" !=null || "what does the room look like" != null)) {

}

它返回此错误不兼容的操作数类型 String 和 boolean 我是一个非常缺乏经验的 Java 程序员。我到处寻找答案,但找不到答案。

4

6 回答 6

2

你有两个问题:

1)

if(op1 ==

永远不要在字符串上使用 ==。使用String.equals();.

2)

 ("look at surroundings" != null || [...] )

布尔类型

所以你不能将它与op1哪个是String

于 2013-10-02T16:30:21.383 回答
2

基本上,您需要改用 String.equals 或 String.equalsIgnoreCase 比较。对于具有可变用户输入的文本游戏(例如,如果他们坚持使用大写锁定),我建议使用 equalsIgnoreCase。正如 upog 建议的那样,还要确保用户没有在输入的末尾添加或添加不需要的空格。试试这个:

Scanner input = new Scanner(System.in);

System.out.println("You are in a small room.");
String op1 = input.nextLine();
op1 = (op1 == null ? "" : op1.trim());

if("look at surroundings".equalsIgnoreCase(op1)
    || "surroundings".equalsIgnoreCase(op1)
    || "what does the room look like".equalsIgnoreCase(op1))
{
    // Look around
}
于 2013-10-02T16:31:09.463 回答
1

尝试这个

Scanner input = new Scanner(System.in);
System.out.println("You are in a small room.");
String op1 = input.nextLine();
    if(op1.equals("look at surroundings") || op1.equals("surroundings") || op1.equals("look at surroundings")||op1.equals("what does the room look like")) {

}
于 2013-10-02T16:32:40.783 回答
1

背景:我曾经在3 Kingdoms MUD 上编程。

您将很快发现您不想将这种逻辑用于命令循环处理。我建议您考虑使用Map<string, IGameCommand>- whereIGameCommand提供实际的工作部分。

用法如下所示:

// might be other things you want in this interface later, as well...
interface IGameCommand
{
    void Invoke(string commandline);
}

if (myMap.containsKey(op1))
{ 
    myMap[op1].Invoke(op1);
}

这种方法更容易阅读,并且让您可以更轻松地将全局命令字典与位置添加的命令合并,并更轻松地携带玩家的物品。(是的,这比你看起来更深入地了解 Java。当你准备好使用我在这里推荐的工具时,你会发现你开始擅长 Java。当你准备好时争论我所掩盖的内容……您将回答人们关于 SO 的问题。)

于 2013-10-02T16:44:26.340 回答
0

我想你想要这样的东西:

if(op1.equals("look at surroundings") || op1.equals("surroundings") || op1.equals("look at surroundings") || op1.equals("what does the room look like")) 
    {
     // your code
     }

请注意,字符串比较是通过使用 String.equals() 或 String.equalsIgnoreCase() 方法完成的。

于 2013-10-02T16:32:53.673 回答
0

除了.equals()在字符串上使用

if ("look at surroundings".equals(ip)) { ...

(注意空字符串,注意比较的顺序),您可能会发现 Java 7 的 switch 语句很有用。有关更多详细信息,请参见此处。请注意,我说 Java 7 是因为 switch 语句被修改为仅在 Java 7 之后才专门使用字符串。

于 2013-10-02T16:31:44.687 回答