Java输入作为变量名称

时间:2016-03-22 18:45:34

标签: java database input

我想创建一个程序,通过输入代码从列表中获取信息。 E.G:

'输入代码:'

  

我的输入:d001

然后我想打印出属于这段代码的信息。该信息属于名为' d001'的字符串,因此在这种情况下,我希望我的输入是我要打印的变量的名称。我该怎么做呢?或者是否有更好的解决方案从数据库列表中输入代码名称来获取信息? 我可以做一个巨大的switch语句,但这不是有效的编码。我现在得到了这个:

public class Main {

    public static Scanner idScanner = new Scanner(System.in);
    public static int diseaseId = 0;

    /** ID Scanning and reading: */
    public static void executeId() {
        diseaseId = idScanner.nextInt();
        switch (diseaseId) {
        case 001:
            System.out.println(IdListener.d001);
            break;

        case 002:
            System.out.println(IdListener.d002);
            break;

        case 003:
            System.out.println(IdListener.d003);
            break;

        case 004:
            System.out.println(IdListener.d004);
            break;

        case 005:
            System.out.println(IdListener.d005);
            break;
        }
    }

    public static void main(String args[]) {
        System.out.println(LayoutListener.titleString); /** Title String Display */
        System.out.print(LayoutListener.idField); /** ID field Display */
        executeId();
    }
}

public class IdListener {
    public static String d001 = "[Neuroblastomia]: Tumor that grows on the nerves of the spine.";
    public static String d002 = "[Anorexia]: Mental disease to avoid eating and consuming.";
    public static String d003 = "[TEMP3]: TEMP3.";
    public static String d004 = "[TEMP4]: TEMP4.";
    public static String d005 = "[TEMP5]: TEMP5.";
}

3 个答案:

答案 0 :(得分:1)

使用地图可能是您想要做的更好的解决方案。

Map<String, String> diseases = new HashMap<String, String>(); // Map<ID, Description>
diseases.put("d001", "[Neuroblastomia]: Tumor that grows on the nerves of the spine.");
diseases.put("d002", "[Anorexia]: Mental disease to avoid eating and consuming.");
// the rest of your diseases

因此,当String disId = "d001"时,它会使事情变得更简单,并且您将不会有一个巨大的切换语句。

if(diseases.containsKey(disId))
    System.out.println(diseases.get(disId));
else
    System.out.println("That id does not exist!");

答案 1 :(得分:0)

使用反射

Field f = IdListener.class.getDeclaredField(“d”+ input); f.get(NULL);

答案 2 :(得分:0)

非常混乱的问题。

您提到了数据库,但没有显示任何代码或解释。

八路

代码中的一个重要缺陷:不要在数字文字上使用前导零。前导零表示该数字应解释为八进制数(base-8)而不是十进制数(base-10)。

因此,case 001:应为case 1:

枚举

如果您只有少数这些疾病代码,并且它们在您的应用运行时期间不会发生变化,learn to use an enum。 Java中的枚举工具比其他语言更强大,更灵活。

地图

如果疾病代码集在运行时可能会发生变化,并且您已经没有足够的疾病代码可以舒适地融入内存,那么请使用Map集合。地图跟踪一堆对象(&#34;键&#34;),每个对象与另一个对象(&#34;值&#34;)相关联。就像一本跟踪一堆单词的普通字典书一样,每个单词都分配了一个定义的文本;每个单词都是映射到值的键(它的定义)。

在您的情况下,Integer键(代码编号)映射到String值(疾病标题/描述)。如果你知道一个代码,你可以要求地图找到匹配的疾病标题。

数据库

如果您有许多这些疾病,太多而不适合记忆,请使用数据库。例如H2 Database

每当您拥有代码时,请在数据库中查询匹配的疾病标题。

您需要了解SQL和JDBC