2017-02-28 5 views
-4

何らかの理由でコンパイラは "入力"が決して閉じられないと言っています。ただし、プログラムは実行され、実行されます。私はそれがなぜそれを言っているのか知りたいだけです。ここに構文があります。前もって感謝します。エラーの誤解

import java.util.Scanner; 
public class Problem1 { 

    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 
     System.out.println("Enter three numbers: "); 
     int N1 = input.nextInt(); 
     int N2 = input.nextInt(); 
     int N3 = input.nextInt();  
     DoSort(N1, N2, N3); 


    } 
    public static void DoSort(int N1, int N2, int N3){ 

     if ((N1 < N2) && (N2 < N3)){ 
      System.out.println("The acsending order is " + N1 + " " + N2 + " " + N3); 
      } 
     if ((N1 > N2) && (N2 > N3)){ 
      System.out.println("The acsending order is " + N3 + " " + N2 + " " + N1); 
      } 
     if ((N1 < N2) && (N2 > N3) && (N1 < N3)){ 
      System.out.println("The acsending order is " + N1 + " " + N3 + " " + N2); 
      } 
     if ((N1 < N2) && (N2 > N3) && (N1 > N3)){ 
      System.out.println("The acsending order is " + N3 + " " + N1 + " " + N2); 
      } 

     } 
    } 

enter image description here

+2

あなたは閉じていないので、入力が終わったら、input.close()でそれを閉じることができます。 – Janar

+0

JDK 7以上を使用している場合、 'try(Scanner input = ....){//コードブロック}'のようなものを試してください。 – SMA

+0

注:あなたの 'DoSort'ロジックは、いくつかの数字が等しいケースを考慮しません。 –

答えて

1

これは、あなたが本当にSystem.inをクローズしたくないので、残念ながら、あなたの場合には適用されません。単なる警告です。

警告を取り除くには、行の前に@SuppressWarnings("resource")を追加します(これもクイックフィックスでなければなりません)。