2017-07-28 71 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(); ..這是例外

記住的原因是:當您關閉一個的掃描儀,這之後在輸入流(這是所有其他掃描儀共享)的引擎蓋下關閉,試圖從其餘的掃描儀實例讀取任何東西將拋出異常