我正在为我的Java课做剪刀石头布的作业。我已经完成了程序,并成功编译了它。我运行了文件,看起来它正在运行。它给了我菜单,我选择了一个变量,例如R,当我按Enter键时,它什么也没做,只是转到下一行。我再次按回车键,它给了我一个超出范围的错误索引,我认为这是因为第二次它没有使用变量。我如何使程序向前发展?该程序应该播放五次,然后返回赢家。预先感谢。This image is what I get when I run the program and press enter twice
if args['parm'] is None:
# do something
elif args['parm'] == 'yes' and param:
# do something else
fun_a(x, y, z)
fun_b(x, y, z)
fun_c(x, y, z)
答案 0 :(得分:3)
您只打印一次输入提示,即在for
循环之前。现在,当您输入第一个输入时,将执行循环的内容。因为您在循环中不打印任何内容,所以没有提示进行下一轮操作。再次按下Enter键后,in.nextLine()
返回一个空字符串,随后,substring
方法引发异常。
您可能应该执行以下操作(注意标记的行):
System.out.println("\tMenu\n\n(R) Rock\n(P) Paper\n(S) Scissors" + "\n\n");
for (int i=0; i<5; i++) {
> System.out.println("Enter Your Hand (R, P, or S): ");
String myHandString = in.nextLine();
String myHand = myHandString.substring(0,1);
myHand = myHand.toUpperCase();
index = (int)(Math.random() * 10) % 3;
computerHand = computerHandArray[index];
thisWinner = theWinnerofOneGame(myHand, computerHand);
if(thisWinner.equals("ME")){
timesIWon++;
> System.out.println("You won.");
} else if(thisWinner.equals("COMPUTER")) {
timesComputerWon++;
> System.out.println("The computer won.");
}
}
更好的是,在计算子字符串之前检查用户输入是否有效。