2017-07-28 30 views
0

Javaで2回目のScannerを使用すると、Scanner sc2のオブジェクトはこの文字列 "int typeOfSort = sc2.nextInt();"の整数に変換されません。2回目の使用時にJavaスキャナが動作しない

Eclipseは起動プログラムの前にエラーを表示しませんが、起動後にこのエラーを表示します。プログラムは実行できますが、sc2をintに変換する必要がある文字列に来ると、programmエラーが表示されます。どのようにそれを修正する?

" 
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();を行っている...それは覚えている例外

の理由である:あなたが1を閉じたとき残りのスキャナインスタンスから何かを読み取ろうとすると、例外がスローされます

(これは他のすべてのスキャナで共有されている)入力ストリームのフードの下で閉じています。
関連する問題