2017-12-22 16 views
0

入力された月と日に基づいてシーズンを表示するプログラムをコーディングしようとしましたが、途中で問題が発生しました。 if文で変数の月を初期化した後、入力された値が有効な月かどうかをチェックするために、コードの後に​​変数を使用して、シーズンを見つけることができません。どんな助けでも大歓迎です。Ifステートメントで変数を宣言する(Java)

import java.util.Scanner; 
public class Date 
{ 
    public static void main(String [] args) 
    { 
     Scanner in = new Scanner(System.in); 
     System.out.println("Please enter the number of the month: "); 
     if (in.hasNextInt() && in.nextInt() > 0 && in.nextInt() <= 12) 
      { 
      int month = in.nextInt(); 
      } 
     else 
      { 
       System.out.println("Error: Invlaid month value"); 
      } 
     System.out.println("Please enter the day: "); 
     int day = in.nextInt(); 

     String season; 
     if (0 < month && month <= 3) 
      { 
       season = "Winter"; 
      } 
     else if (3 < month && month <= 6) 
      { 
       season = "Spring"; 
      } 
     else if (6 < month && month <= 9) 
      { 
       season = "Summer"; 
      } 
     else if (9 < month && month <= 12) 
      { 
       season = "Fall"; 
      } 

    } 

} 
+1

スコープと同じスコープで宣言されている場合にのみアクセスできますそれにアクセスしようとしています。より具体的には、宣言された変数のスコープは、現在使用しているスコープのサブセットでなければなりません。 – Zachary

+0

デフォルト値* outside *と* before * 'if'ステートメントを定義して初期化し、 ifステートメントでは、プログラムの残りの部分でアクセス可能になります。 – davedwards

答えて

0

あなたが遭遇する問題は、ifステートメント内で変数が宣言されていることです。つまり、{}内でしかアクセスできないということです。 This article goes over the basics of variable scope in Java。現在のスコープのサブセットであるスコープ内で変数が定義されている場合にのみ、スコープから変数にアクセスできます。

目的を達成するには、変数をif文の外部に宣言してアクセス可能にする必要があります。月が無効な場合は、大文字と小文字を区別する必要があります。それ以外の場合は、デフォルト値は0になります。

int month = 0; 
if (in.hasNextInt()) { 
    month = in.nextInt(); 

    if (!(month > 0 && month <= 12)) { 
     month = 0; 
     System.out.println("ERROR"); 
    } 
} else { 
    // Handle graceful exit 
} 

... 
if (0 < month && month <= 3) { ... } 
+2

'if'ステートメントは非常に面白く見えます。 'nextInt'を呼び出すたびに' int' –

+0

というWombatが使われます。 3つの答えに同じバグがあったとき、どうやってそれを逃したのか分かりません。 –

+0

修正済み。問題が明らかに明白であったため、他の問題をチェックするのを忘れてしまった。それを指摘するための乾杯。それを修正することで、彼が完全に公平になっていた問題を回避することができます... – Zachary

関連する問題