gpt4 book ai didi

Java 石头剪刀布循环

转载 作者:行者123 更新时间:2023-11-30 09:31:53 25 4
gpt4 key购买 nike

我必须制作一个石头剪刀布程序,让用户输入一个选择,然后根据计算机的选择对其进行测试。每场比赛结束后,它应该询问玩家是否要继续,他们应该输入'Y'或'N'来继续或退出。我能想到的最好的是一个 while 循环,除了最后一点,一切都运行良好。

import java.util.Scanner;

public class rockpaperscissors {
public static void main(String[] args) {

Scanner input = new Scanner(System.in);
char cont = 'y';

while (cont == 'y'){
int com = (int)(Math.random() * 3);

System.out.println("Paper (0), Rock (1), or Scizzors (2)?");
int hum = input.nextInt();

if (com==(hum))
System.out.println("It's a tie!");

else if (hum == 0)
{
if (com == 1)
System.out.println ("You chose paper, computer chose rock You Win!");
else if (com == 2)
System.out.println ("You chose paper, Computer chose scissors You Lose!");
}

else if (hum == 1)
{
if (com == 2)
System.out.println ("You chose Rock, computer chose scissors You Win!");
else if (com == 0)
System.out.println ("You chose Rock, Computer chose paper You Lose!");
}

else if (hum == 2)
{
if (com == 0)
System.out.println ("You chose Scissors, computer chose paper You Win!");
else if (com == 1)
System.out.println ("You chose Scissors, Computer chose rock You Lose!");
}

System.out.println("Would you like to continue? (Y/N)");
cont = input.nextLine().charAt(0);
}
}
}

当我运行它时,循环运行正常,游戏开始运行,但随后出现“字符串超出索引范围”错误。知道如何解决这个问题吗?

最佳答案

您的 nextInt() 只是从输入缓冲区中读取数字,将新行留在其中。因此,当您调用 input.nextLine() 时,您得到的是一个空行 - 第一行数字之后的其余部分。您应该阅读下一行并确保它不为空。如果是,请再读一遍。

顺便说一下,您计算谁获胜的代码有点麻烦。如果我是你,我会尽量让它更通用和干净一点。考虑一个可以处理更复杂游戏的解决方案,例如 Rock Paper Scissors Lizard Spock无需添加太多代码。

关于Java 石头剪刀布循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12735915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com