【问题标题】:How to print a line based on user input and randomly selected choices如何根据用户输入和随机选择的选项打印一行
【发布时间】:2015-04-09 21:59:54
【问题描述】:

我正在为我的第一个 java 类编写代码。它的石头剪刀布(蜥蜴spock)。该程序运行完美,允许计算机输入和输出随机选择。但是,当情况合适时,我希望程序能说出类似“平局”或“你赢了”之类的话。到目前为止,我还没有得到这个。我让它对错误的情况说“它是一个领带”一次,而且只有一次,无法复制它。我的代码是:

导入 java.util.*;

类摇滚{ 公共静态无效主(字符串参数[]){

    System.out.println( "rock, paper, scissors, lizard, or spock?" );
    Scanner user_input = new Scanner ( System.in );
    String guess;
    guess = user_input.next( );

    String [ ] comp;
        comp = new String [ 5 ];
        comp[ 0 ] = "Rock";
        comp[ 1 ] = "Paper";
        comp[ 2 ] = "Scissors";
        comp[ 3 ] = "Lizard";
        comp[ 4 ] = "Spock";

        Random hi;
        hi = new Random( );
        System.out.println( "::" + guess +
            ":: vs ::" + comp[ hi.nextInt( 5 ) ] + "::") ;

            if (guess.equals( "rock" ) & comp[ hi.nextInt( 5 ) ].equals(1) ) System.out.println( "Its a tie" );

}

}

我现在只有一个输出,但是一旦我知道该怎么做,我会为每种情况添加一个。

非常感谢任何帮助!谢谢!

【问题讨论】:

  • 附注我知道摇滚与纸不是平局,我只是在尝试不同的东西。请不要评判我

标签: java output user-input


【解决方案1】:

可能对您有所帮助的多个细节:

您需要使用 && 而不是 & 来测试逻辑与

约定是类名以 Caps: Rock 开头

您调用 nextInt() 两次,它可能会返回两个不同的值。如果你想要同样的,你应该调用它一次并将它存储在一个变量中。

【讨论】:

  • 感谢您的建议。在我读到这篇文章之前我有点困惑,因为我遇到了无意义的错误,但是两次调用 nextInt() 是问题
【解决方案2】:

您需要使用 if else 语句检查每个场景。 请注意不要进行任何多余的检查。

例子:

String compChoice = comp[hi.nextInt(5)];
if (guess.equalsIgnoreCase( compChoice )) { 
System.out.println("its a tie!");
}
else if(guess.equalsIgnoreCase( "rock" ) && compChoice.equals("paper")){
System.out.println("You lose");
}

等等。

另外我建议你改变你的:

if (guess.equals( "rock" )

收件人:

If (guess.equalsIgnoreCase( "rock" )

如果用户确实输入了“roCK”之类的内容,那么大写不会弄乱任何东西。

【讨论】:

  • 我使用了您的建议,并且在将括号放在正确的位置之后(由于它们放错了位置,我有 100 个错误!)它完美地工作。谢谢
猜你喜欢
  • 2022-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-08
  • 2016-01-11
  • 2022-06-30
  • 2019-12-24
  • 2013-05-23
相关资源
最近更新 更多