我通过尝试在Eclipse中制作一个简单的石纸剪刀游戏来学习Java:
package com;
import java.util.Random;
import java.util.Scanner;
public class Game {
public static void main(String[] args) {
Game game = new Game();
game.playerChoice();
game.aiChoice();
game.playGame();
}
public void playGame() {
if (playerChoice() == "Rock") {
if (aiChoice() == "Rock") {
System.out.println("Tie!");
} else if (aiChoice() == "Paper") {
System.out.println("AI wins!");
} else {
System.out.println("You win!");
}
} else if (playerChoice() == "Paper") {
if (aiChoice() == "Rock") {
System.out.println("You win!");
} else if (aiChoice() == "Paper") {
System.out.println("Tie!");
} else {
System.out.println("AI wins!");
}
} else {
if (aiChoice() == "Rock") {
System.out.println("AI wins!");
} else if (aiChoice() == "Paper") {
System.out.println("You win!");
} else {
System.out.println("Tie!");
}
}
}
public String playerChoice() {
Scanner scanner = new Scanner(System.in);
String word = null;
try {
System.out.println("Type Rock, Paper, or Scissors");
word = scanner.next();
System.out.println(word + " is saved as your choice");
} finally {
scanner.close();
}
return word;
}
public String aiChoice() {
String[] wordlist = {"Rock", "Paper", "Scissors"};
String word = wordlist [new Random().nextInt(wordlist.length)];
System.out.println("AI has randomly picked " + word);
return word;
}
}当我在扫描器输入中输入"Rock“、”纸质“或”剪刀“时,我在控制台中得到以下信息:
Type Rock, Paper, or Scissors
Rock <--- This is what I input into the console
Rock is saved as your choice
AI has randomly picked Scissors
Type Rock, Paper, or Scissors <--- This unintentionally repeats
Exception in thread "main" java.util.NoSuchElementException
at java.base/java.util.Scanner.throwFor(Unknown Source)
at java.base/java.util.Scanner.next(Unknown Source)
at com.Game.playerChoice(Game.java:53)
at com.Game.playGame(Game.java:17)
at com.Game.main(Game.java:12)我做错了什么导致这个异常,为什么System.out.println(“类型岩石,纸,或剪刀”),重复自己?谢谢。
发布于 2018-06-13 01:41:13
首先,不要关闭扫描仪。这导致了NoSuchElement异常
您可以将扫描器移动到字段变量,而不是为每个玩家的选择创建一个新变量。
public class Game {
private Scanner sc = new Scanner(System.in);
public static void main(... 要解决剩下的问题,在比赛开始前获得选择是没有意义的
就玩游戏吧
public static void main(String[] args) {
Game game = new Game();
game.playGame();
}然后,您需要坚持每个玩家的选择,而不是为每个方法调用再次选择(导致您的输入重复,AI为每个比较选择新的选择)。
public void playGame() {
final String p = playerChoice();
final String a = aiChoice();
if (p.equals(a)) {
if (a.equals("Rock")) {https://stackoverflow.com/questions/50827982
复制相似问题