Java 如何将输入定向到常量?

Java 如何将输入定向到常量?,java,netbeans,constants,user-input,Java,Netbeans,Constants,User Input,我正在用netBeans创建一个程序,它接受用户输入的元素符号,并使用该元素的原子质量。我将所有元素声明为原子质量不变的常量,但意识到我不知道如何让用户输入与它们连接。我不希望if语句超过100次。HashMap是一种将您选择的任何一种类型的键映射到您选择的任何一种(可能不同)类型的值的方法 HashMap<String, Double> atomicMasses = new HashMap<String, Double>(); atomicMasses.put("H",

我正在用netBeans创建一个程序,它接受用户输入的元素符号,并使用该元素的原子质量。我将所有元素声明为原子质量不变的常量,但意识到我不知道如何让用户输入与它们连接。我不希望if语句超过100次。

HashMap是一种将您选择的任何一种类型的键映射到您选择的任何一种(可能不同)类型的值的方法

HashMap<String, Double> atomicMasses = new HashMap<String, Double>();
atomicMasses.put("H", 1.008);
atomicMasses.put("He", 4.002602);
// And so on...
String symbol = ...; // Acquire symbol string somehow
if (atomicMasses.containsKey(symbol)) {
    System.out.println(atomicMasses.get(symbol));
}
HashMap atomicmass=newhashmap();
原子质量。put(“H”,1.008);
原子质量。put(“He”,4.002602);
//等等。。。
字符串符号=…;//以某种方式获取符号字符串
if(原子质量容器(符号)){
System.out.println(atomicmass.get(symbol));
}
第一个泛型类型是键类型;第二种是值类型
put()
创建映射
containsKey()
检查给定密钥的映射是否存在(注意,这是区分大小写的,因此查找
“h”
不起作用);和
get()
获取连接到给定键的值(也区分大小写)


由于
HashMap
实现了更通用的接口
Map
,并且该接口包含您通常需要执行的所有操作,因此通常将声明编写为
Map atomicmass=new HashMap()

你听说过HashTable吗?@PM77-1是对的,某种字典可能是最简单的。另一个选项是使用Refection将常量符号本质上视为文本字符串,您可以将用户输入与之进行比较。一旦找到常量符号,就可以提取它的值。数组也可以做到这一点,但会有一些空的大小写。然而,用原子序数访问这些信息似乎是合乎逻辑的,因为原子序数几乎是连续的,数组非常适合+1,因为它已经停下来思考“等等,一定有更好的方法”——许多有抱负的程序员不这样认为,然后继续编写包含100个分支的if语句。