2017-01-16 2 views
0

私はちょうどJavaコーディングの初心者です。java.lang.IllegalStateException:スキャナが閉じたエラー

これはコードの開始レベルにあるランダムなプログラムです。

最近このエラーが発生し、解決できませんでした。これで私を助けてください。

Exception in thread "main" Enter the first number:java.lang.IllegalStateException: Scanner closed 
    at java.util.Scanner.ensureOpen(Unknown Source) 
    at java.util.Scanner.next(Unknown Source) 
    at java.util.Scanner.nextInt(Unknown Source) 
    at java.util.Scanner.nextInt(Unknown Source) 
    at New.main(New.java:19) 

次のように私のプログラムは以下のとおりです。プログラムの

import java.util.*; 
public class New { 
    public static void main(String args[]){ 
     int hour,min,sec,o; 
     Scanner s = new Scanner(System.in); 
     System.out.println("Enter the time:"); 
     hour=s.nextInt(); 
     min=s.nextInt(); 
     sec=s.nextInt(); 

     date d = new date(); 
     d.setdate(hour,min,sec); 
     System.out.println(d.display()); 
     s.close(); 

     calc c = new calc(); 
     int a,b; 
     System.out.print("Enter the first number:"); 
     a=s.nextInt(); 
     System.out.print("Enter the second number:"); 
     b=s.nextInt(); 
     c.get(a,b); 
     System.out.println("Which operation do you want to perform"); 
     System.out.println("1.Addition\n 2.Subtraction\n 3.Multiplication\n 4.Division"); 
     System.out.print("Enter the Operation:"); 
     o=s.nextInt(); 
     c.compute(o); 

    } 

    public class date { 
    int hour,min,sec; 

    public void setdate(int h,int m,int s){ 
     hour= ((h>0 && h<24)?h:0); 
     min= ((m>0 && m<60)?m:0); 
     sec= ((s>0 && s<60)?s:0); 
    } 
    public String display(){ 
     return String.format("%02d:%02d:%02d",hour,min,sec); 
    }} 



} 
public class calc { 
    int a,b,o; 
    double c; 
    public void get(int x,int y){ 
     a=x; 
     b=y; 
    } 
    public double compute(int z){ 
     o=z; 
    switch(o) 
    { 
    case 1: c=a+b; 
    break; 
    case 2: c=a-b; 
    break; 
    case 3: c=a*b; 
    break; 
    case 4: c=a/b; 
    break; 
    default: System.out.println("Invalid Operation"); 
    } 
    return c; 
    } 
} 

日付の部分は完全に正常に動作します。この混乱はプログラムの第2部分にある。

+1

動作しますs.close()のスキャナ。なぜそれを使用することができないのですか – AMB

+0

スキャナを閉じてから、s.close()を削除します。 –

+0

**本当の**応答:googleと例外メッセージ** go first ** – GhostCat

答えて

0

あなたはスキャナーを閉じて、そのようにs.close();を削除する

s.close(); //remove this line 

calc c = new calc(); 
    int a,b; 
    System.out.print("Enter the first number:"); 
    a=s.nextInt(); 

nextIntを呼び出して、あなたのコードは、あなたが閉じている

+0

ありがとうたくさんありますが、エラーなく動作しますが、クラスcalcの演算は機能していません。操作を入力すると、何も結果は得られません.. :( – Terminator

+0

@Terminator Whyあなたはそうだと思いますか?結果を印刷することは決してありません。 – Jens

+0

ああええ、私は忘れてしまいました。 – Terminator

0
... 
    d.setdate(hour,min,sec); 
    System.out.println(d.display()); 
    s.close(); 
    ... 

ステートメントを削除

s.close(); 
0

は、あなたが再びそれを読むことができませんそれ以外の、入力ストリームを閉じないでください。

s.close(); 

表示演算出力:

double d = c.compute(o); 
System.out.print("Result:" +d); 
+0

ありがとう。エラーなしで正常に動作しますが、演算()が正しく動作していません。私は操作を入力すると、私は結果を取得しません。:( – Terminator

+0

あなたは何か例外を取得していますか?私はそれが動作すると思います。幸運とハッピーコーディング! – PyThon

関連する問題