2
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

你能帮我把连接的字符串识别为我应该声明的字符串变量吗?

4

5 回答 5

4

您不能按名称“寻址”局部变量(反射可以帮助您处理成员成员变量,但不能处理局部变量)。

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

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++;
}
于 2013-01-26T12:03:49.707 回答
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);
    }
于 2013-01-26T12:05:03.457 回答
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);
于 2013-01-26T12:08:40.873 回答
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);
于 2013-01-26T12:18:00.790 回答
-1

@dasblinkenlight 好方法。只有一个细节,你必须声明变量fruit:

String fruit = "e" + num;
于 2019-06-25T14:50:57.443 回答