在我的代码线程“主”java.util.NoSuchElementException异常?
问题描述:
我做错了什么?在我的代码线程“主”java.util.NoSuchElementException异常?
的错误是:
异常在线程 “主” java.util.NoSuchElementException
在java.util.Scanner.throwFor(Scanner.java:862)
在java.util.Scanner中的.next(Scanner.java:1485)
在java.util.Scanner.nextInt(Scanner.java:2117)
在java.util.Scanner.nextInt(Scanner.java:2076)
在MyClass.main( MyClass.java:14)
下面是代码:
import java.util.Scanner;
import java.util.Random;
public class MyClass {
public static Scanner scan = new Scanner(System.in);
public static void main(String args[]) {
int person,ai,aiint;
Scanner scan = new Scanner(System.in);
Random rand = new Random();
System.out.println("Let's Play rock paper scissors! press 1 for rock 2 for paper 3 for scissors ");
System.out.println();
aiint=rand.nextInt(3)+1;
System.out.println("Enter your play: ");
person=scan.nextInt();
System.out.println("Computer play is: " +aiint);
System.out.println("Your play is:" +person);
if (person==aiint) {
System.out.println("It's a tie!");
}
else if (person==1){
if(aiint==2){
System.out.println("Paper beats rock, you lose!");
}
else if(aiint==3){
System.out.println("Rock beats scissors, you win!");
}
}
else if (person==2){
if(aiint==1){
System.out.println("Paper beats rock, you win!");
}
else if (aiint==3){
System.out.println("Scissors beats paper, you lose!");
}
}
else if (person==3){
if(aiint==1){
System.out.println("Rock beats scissors, you lose!");
}
else if(aiint==2){
System.out.println("Scissors beats paper. you win!");
}
}
}
}
答
你的代码是工作的罚款。
但是既然你提到NoSuchElementException
,当您尝试读的东西形成Scanner
它抛出,但Scanner
没有什么被读取。
从Scanner#nextInt()
文档@throws NoSuchElementException异常,如果输入信息已耗尽
为了防止这种情况,你应该检查在Scanner
是否存在任何元素:
if(scan.hasNextInt()){
person = scan.nextInt();
} else {
//show error
return;
}
任何原因'实例化'新的扫描仪(System.in)'两次? –
我自己试了一下代码。基本上工作正常。 – Duke