1

如果用户键入“C”,我只希望输出为 12.0,与键入“H”相同。问题是输入被存储为正确的字符串吗?我试图通过 Double.parseDouble 将字符串转换为双精度


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...
}

然后,在输出()中:

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

使用您目前拥有的常量字段的唯一方法涉及反射,您真的不想去那里。

于 2012-09-22T13:25:39.763 回答
0

您是否考虑过使用输入的 Switch/case 语句?

于 2012-09-22T13:41:51.440 回答
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 回答