2017-07-28 68 views
0

当我在第二次使用Java的扫描仪时,扫描仪sc2的对象不会在此字符串“int typeOfSort = sc2.nextInt();”中转换为整数。当我第二次使用Java扫描仪时不工作

Eclipse在启动程序之前不显示错误,但在启动后显示此错误。程序可以运行,但是当到达sc2必须转换为int的字符串时,程序会显示错误。如何解决它?

" 
Exception in thread "main" java.util.NoSuchElementException 
at java.util.Scanner.throwFor(Unknown Source) 
at java.util.Scanner.next(Unknown Source) 
at java.util.Scanner.nextInt(Unknown Source) 
at java.util.Scanner.nextInt(Unknown Source) 
at Buble.main(Buble.java:39) 
" 

Java代码的

import java.util.Scanner; 

public class Buble { 


    public static void main(String[] args) { 

    int size; // size of Array 
    int array[]; // Array 

    System.out.print("Enter size of arrays: "); 
    // Scanner is tool for input text to console 
     Scanner sc = new Scanner(System.in);   
     size = sc.nextInt(); 
     array = new int [size]; 
     sc.close(); 

    for(int i = 0; i < array.length; i++){ 
     double randnum = Math.floor(Math.random() * 1000); 
     array[i] = (int) randnum; 
     System.out.println("Element " + i + " = " + (int) randnum); 

    } 

    for(int b = 0; b < array.length; b++){ 
     for(int i = 1; i < array.length; i++) { 
      if(array[i] < array[i-1]){ 
       int a = array[i]; 
       array[i] = array[i-1]; 
       array[i-1] = a; 
      } 

     } 
    } 

    System.out.println("If you want to sort from smallest to largest 
    press 1 or 2 if Conversely: "); 

     Scanner sc2 = new Scanner(System.in); 
     int typeOfSort = sc2.nextInt(); // String with error 
     sc2.close(); 

    if(typeOfSort == 1){ 
     for(int i = 0; i < array.length; i++){ 
      System.out.println(array[i]); 
     } 
    } 
    else{ 
     for(int i = array.length; i < array.length; i++){ 
      System.out.println(array[i]); 
     } 
    } 
     } 
    } 

回答

-1

您正在使用多台扫描仪,并且您对这些对象的一个​​做sc.close(); ..这是例外

记住的原因是:当您关闭一个的扫描仪,这之后在输入流(这是所有其他扫描仪共享)的引擎盖下关闭,试图从其余的扫描仪实例读取任何东西将抛出异常