除循环外的所有内容都有效,当被问及是否要再次玩时,输入“ y”或“ n”会引发错误,我一生都无法弄清楚。
对不起,如果此代码格式不正确,请复制并粘贴。
/* © Tucker Fowler 2015
*/
package rpslizardspock;
import java.util.Scanner;
import java.util.Random;
/**
*
* @author Tucker
*/
public class RpsLizardSpock {
public static void main(String[] args) {
String userChoice;
boolean goAgain;
boolean y = true;
boolean n = false;
Scanner sc = new Scanner(System.in);
Random ra = new Random();
while (goAgain = y) {
System.out.println("Welcome to Rock, Paper, Scissors, Lizard, Spock\n\n"
+ "Please make a Choice: ");
userChoice = sc.nextLine();
String ucConv = userChoice.toUpperCase();
System.out.println("You Chose: " + userChoice);
int cpuChoice = ra.nextInt(5) + 1;
if ((cpuChoice == 1) && (((ucConv.equals("LIZARD"))) || ((ucConv.equals("SCISSORS"))))) {
System.out.println("\n\nComputer chose Rock, You Lose");
} else if ((cpuChoice == 1) && (((ucConv.equals("PAPER"))) || ((ucConv.equals("SPOCK"))))) {
System.out.println("\n\nComputer chose Rock, You Win");
} else if ((cpuChoice == 2) && (((ucConv.equals("SPOCK"))) || ((ucConv.equals("ROCK"))))) {
System.out.println("\n\nComputer chose Paper, You Lose");
} else if ((cpuChoice == 2) && (((ucConv.equals("SCISSORS"))) || ((ucConv.equals("LIZARD"))))) {
System.out.println("\n\nComputer chose Paper, You Win");
} else if ((cpuChoice == 3) && (((ucConv.equals("LIZARD"))) || ((ucConv.equals("PAPER"))))) {
System.out.println("\n\nComputer chose Scissors, You Lose");
} else if ((cpuChoice == 3) && (((ucConv.equals("SPOCK"))) || ((ucConv.equals("ROCK"))))) {
System.out.println("\n\nComputer chose Scissors, You Win");
} else if ((cpuChoice == 4) && (((ucConv.equals("SPOCK"))) || ((ucConv.equals("PAPER"))))) {
System.out.println("\n\nComputer chose Lizard, You Lose");
} else if ((cpuChoice == 4) && (((ucConv.equals("SCISSORS"))) || ((ucConv.equals("ROCK"))))) {
System.out.println("\n\nComputer chose Lizard, You Win");
} else if ((cpuChoice == 5) && (((ucConv.equals("ROCK"))) || ((ucConv.equals("SCISSORS"))))) {
System.out.println("\n\nComputer chose Spock, You Lose");
} else if ((cpuChoice == 5) && (((ucConv.equals("PAPER"))) || ((ucConv.equals("LIZARD"))))) {
System.out.println("\n\nComputer chose Spock, You Win");
} else if ((cpuChoice == 1) && (ucConv.equals("ROCK"))) {
System.out.println("\n\nComputer chose Rock also, Draw");
} else if ((cpuChoice == 2) && (ucConv.equals("PAPER"))) {
System.out.println("\n\nComputer chose Paper also, Draw");
} else if ((cpuChoice == 3) && (ucConv.equals("SCISSORS"))) {
System.out.println("\n\nComputer chose Scissors also, Draw");
} else if ((cpuChoice == 4) && (ucConv.equals("LIZARD"))) {
System.out.println("\n\nComputer chose Lizard also, Draw");
} else if ((cpuChoice == 5) && (ucConv.equals("SPOCK"))) {
System.out.println("\n\nComputer chose Spock also, Draw");
}
System.out.println("\n\n Would you like to play again? y/n");
goAgain = sc.nextBoolean();
}
}
}
我得到的错误是:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:909)
at java.util.Scanner.next(Scanner.java:1530)
at java.util.Scanner.nextBoolean(Scanner.java:1825)
at rpslizardspock.RpsLizardSpock.main(RpsLizardSpock.java:73)
Java Result: 1
通常,使用a时Scanner
,总是调用next()
或always call的错误率最少nextLine()
。当我们使这两个一致时,解决分配问题,并比较y
,则代码可以正常工作。
import java.util.Scanner;
import java.util.Random;
public class RpsLizardSpock {
public static void main(String[] args) {
String userChoice;
boolean goAgain = true;
Scanner sc = new Scanner(System.in);
Random ra = new Random();
while (goAgain) {
System.out.println("Welcome to Rock, Paper, Scissors, Lizard, Spock\n\n"
+ "Please make a Choice: ");
userChoice = sc.next();
String ucConv = userChoice.toUpperCase();
System.out.println("You Chose: " + userChoice);
int cpuChoice = ra.nextInt(5) + 1;
if ((cpuChoice == 1) && (((ucConv.equals("LIZARD"))) || ((ucConv.equals("SCISSORS"))))) {
System.out.println("\n\nComputer chose Rock, You Lose");
} else if ((cpuChoice == 1) && (((ucConv.equals("PAPER"))) || ((ucConv.equals("SPOCK"))))) {
System.out.println("\n\nComputer chose Rock, You Win");
} else if ((cpuChoice == 2) && (((ucConv.equals("SPOCK"))) || ((ucConv.equals("ROCK"))))) {
System.out.println("\n\nComputer chose Paper, You Lose");
} else if ((cpuChoice == 2) && (((ucConv.equals("SCISSORS"))) || ((ucConv.equals("LIZARD"))))) {
System.out.println("\n\nComputer chose Paper, You Win");
} else if ((cpuChoice == 3) && (((ucConv.equals("LIZARD"))) || ((ucConv.equals("PAPER"))))) {
System.out.println("\n\nComputer chose Scissors, You Lose");
} else if ((cpuChoice == 3) && (((ucConv.equals("SPOCK"))) || ((ucConv.equals("ROCK"))))) {
System.out.println("\n\nComputer chose Scissors, You Win");
} else if ((cpuChoice == 4) && (((ucConv.equals("SPOCK"))) || ((ucConv.equals("PAPER"))))) {
System.out.println("\n\nComputer chose Lizard, You Lose");
} else if ((cpuChoice == 4) && (((ucConv.equals("SCISSORS"))) || ((ucConv.equals("ROCK"))))) {
System.out.println("\n\nComputer chose Lizard, You Win");
} else if ((cpuChoice == 5) && (((ucConv.equals("ROCK"))) || ((ucConv.equals("SCISSORS"))))) {
System.out.println("\n\nComputer chose Spock, You Lose");
} else if ((cpuChoice == 5) && (((ucConv.equals("PAPER"))) || ((ucConv.equals("LIZARD"))))) {
System.out.println("\n\nComputer chose Spock, You Win");
} else if ((cpuChoice == 1) && (ucConv.equals("ROCK"))) {
System.out.println("\n\nComputer chose Rock also, Draw");
} else if ((cpuChoice == 2) && (ucConv.equals("PAPER"))) {
System.out.println("\n\nComputer chose Paper also, Draw");
} else if ((cpuChoice == 3) && (ucConv.equals("SCISSORS"))) {
System.out.println("\n\nComputer chose Scissors also, Draw");
} else if ((cpuChoice == 4) && (ucConv.equals("LIZARD"))) {
System.out.println("\n\nComputer chose Lizard also, Draw");
} else if ((cpuChoice == 5) && (ucConv.equals("SPOCK"))) {
System.out.println("\n\nComputer chose Spock also, Draw");
}
System.out.println("\n\n Would you like to play again? y/n");
goAgain = sc.next().charAt(0) == 'y';
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句