尝试用java进行文本冒险。但我的互动被窃听了

时间:2013-10-02 16:28:26

标签: java

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程序员。我已经到处寻找答案,但找不到答案。

6 个答案:

答案 0 :(得分:2)

你有两个问题:

<强> 1)

if(op1 ==

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

<强> 2)

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

的类型为布尔

因此,您无法将其与op1

String进行比较

答案 1 :(得分: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
}

答案 2 :(得分: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")) {

}

答案 3 :(得分:1)

背景:我曾经在3 Kingdoms MUD.

上进行编程

您将很快发现您不希望将此类逻辑用于命令循环处理。我建议您使用Map<string, IGameCommand> - 其中IGameCommand提供实际的工作部分。

用法如下:

// 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上回答人们的问题。)

答案 4 :(得分:0)

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

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

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

答案 5 :(得分: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()方法完成的。