1

ユーザーが「C」と入力した場合、出力を12.0にしたいだけで、「H」と入力した場合と同じです。問題は、入力が正しい文字列として保存されていることですか? Double.parseDouble でも文字列を double に変換しようとしました


import java.util.Scanner;

public class Elements {

    Scanner input=new Scanner(System.in);   
    public static final double H = 1.0; 
    public static final double Li = 6.9;
    public static final double Be = 9;
    public static final double B = 10.8;
    public static final double C = 12.0;

    public double output() {
        return C ; // I want the user to choose the variable to return
    }
}
4

3 に答える 3

5

値をフィールドとして保存するのではなく、マップに保存することをお勧めします。

private static final Map<String, Double> values = new HashMap<String, Double>();
static {
    values.put("H", 1.0);
    values.put("Li", 6.9);
    // and so on...
}

次に、output()で:

return values.get(input.nextLine());

あなたが現在持っているように定数フィールドでそれをする唯一の方法は反射を含みます、そしてあなたは本当にそこに行きたくありません。

于 2012-09-22T13:25:39.763 に答える
0

地図があなたの問題を解決します。マップは、特定のキーの値を返します。

java.util.HashMap<String, Double> map = new java.util.HashMap<String, Double>();
map.put("C", 12.0);
map.put("H", 1.0);
map.put("B", 10.8);

ユーザーの入力の値を取得できます。

Double value = map.get(inputString);
于 2012-09-22T13:30:08.960 に答える
0

入力を使用して Switch/case ステートメントを使用することを考えましたか?

于 2012-09-22T13:41:51.440 に答える