使一个连接字符串在java中被识别为声明的变量

时间:2013-01-26 11:59:48

标签: java string variables

public class Assignment1 {
    public static void main(String[] args)
    {
        String e1 = "apple"; String e2 = "mango";
        String e3 = "banana"; String e4 = "cherry"; String fruit;
        int num = 1;
        while (num <= 4){
            fruit = "e" + num;
            System.out.println(fruit);
            count++;
        }
    }
}

我制作了一份我将要做的示例代码,我希望代码结果将输出为

apple
mango
banana
cherry

但我得到的是:

e1
e2
e3
e4

你能帮我把串联的字符串识别为我认为是声明的字符串变量吗?

5 个答案:

答案 0 :(得分:4)

您不能按名称“解决”局部变量(反射可以帮助您使用成员变量,但不能帮助您使用本地变量。)

您需要一个关联容器来使用字符串名称来寻址项目 - 例如,HashMap<String,String>。将对{"e1", "apple"}, {"e2", "mango"}等添加到HashMap,然后使用map.get(fruit)按键检索值。

HashMap<String,String> map = new HashMap<String,String>();
map.put("e1", "apple");
map.put("e2", "mango");
...
int num = 1;
while (num <= 4){
    fruit = "e" + num;
    System.out.println(map.get(fruit));
    num++;
}

答案 1 :(得分:4)

使用数组:

public static void main(String[] args)
{
    String[] e = {"apple", "mango", "banana", "cherry"};
    for (int num = 0; num < e.length; ++num) {
        System.out.println(e[num]);
    }
}

编写循环的另一种方法是

    for (String fruit : e) {
        System.out.println(fruit);
    }

答案 2 :(得分:2)

您不能将Integer连接到String并期望e +“1”将评估变量e1。您应该将所有String变量放在一个数组中并迭代

        String e1 = "Mango";
        String e2 = "Apple";
        String e3 = "Banana";
        String e4 = "Cherry";

        String[] fruits = {e1, e2, e3, e4};
        String allFruits = new String();

        for(String fruit : fruits){
            allFruits += " " + fruit;
        }

        System.out.println(allFruits);

答案 3 :(得分:1)

您还可以使用enum

public enum Fruit {
   APPLE, MANGO, BANANA, CHERRY
}

存储它:

List<Fruit> fruits = new ArrayList<Fruit>();
fruits.add(Fruit.APPLE);
fruits.add(Fruit.MANGO);
fruits.add(Fruit.BANANA);
fruits.add(Fruit.CHERRY);

迭代它:

for (Fruit fruit : fruits)
   System.out.println(fruit);

答案 4 :(得分:-1)

@dasblinkenlight好方法。只有一个细节,您必须声明可变水果:

String fruit = "e" + num;