2016-10-14 4 views
-1

何が間違っているのか分かりません。私は3つのメソッドを使用してユーザー入力を受け取り、入力に対して機能する最小のプリミティブタイプを教えるクラスプロジェクトを持っていますが、何らかの理由でコードを実行すると、すべての入力が0になります。別のクラスにあります): コードは修正されました。それ以上の答えは必要ありません構文の私の初心者の理解だった。私のコードは解析されません

package stuff; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 

public class driver 
{ 



public static void run() throws IOException 
{ 
System.out.println("Please input a number"); 
num1 = prompt(); 
analyze(); 
} 
static long num1; 

public static long prompt() throws IOException 
{ 
BufferedReader input = new BufferedReader (new InputStreamReader(System.in)); 
    String Selection1 = input.readLine(); 
    long num1 = Long.parseLong(Selection1); 
    return num1; 
} 

public static void analyze() throws IOException 
{ 
System.out.println(num1); 
if (num1>=Byte.MIN_VALUE && num1<=Byte.MAX_VALUE) 
{ 
    System.out.println("you should use a byte"); 
} 
else if (num1>=Short.MIN_VALUE && num1<=Short.MAX_VALUE) 
{ 
    System.out.println("you should use a short"); 
} 
else if (num1>=Integer.MIN_VALUE && num1<=Integer.MAX_VALUE) 
{ 
    System.out.println("you should use an integer"); 
} 
else 
{ 
    System.out.println("you should use a long"); 
} 

} 
} 

答えて

1

promptメソッドから返された値を使用する必要があります。

num1 = prompt(); 

をし、プログラムは魔法のように動作します:

代わりにちょうどprompt();を呼び出すには、値がnum1に戻って割り当てる必要があります!

"お待ちください!promptメソッドでは、すでに解析済みの長文をnum1に割り当てました!見てください!"あなたは叫んだ。

long num1 = Long.parseLong(Selection1); 

実際に、あなたは、クラスレベルで宣言num1変数に解析された値を代入していません。 num1という新しい変数を作成しています。

関連する問題