线程" main"中的例外情况我的代码有java.util.NoSuchElementException吗?

时间:2017-10-08 15:41:28

标签: java exception java.util.scanner

我做错了什么?

错误是:

  

线程中的异常" main" 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!");
        }
    }    
    }
}

1 个答案:

答案 0 :(得分:0)

您的代码运行正常。

但是,自从您提到NoSuchElementException后,当您尝试从Scanner读取某些内容时会抛出此内容,但Scanner没有任何内容需要阅读。

来自Scanner#nextInt()

的文档
  

如果输入用尽,则@throws NoSuchElementException

要防止它,您应该检查Scanner

中是否存在任何元素
if(scan.hasNextInt()){
    person = scan.nextInt();
} else {
    //show error
    return;
}