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
你能帮我把串联的字符串识别为我认为是声明的字符串变量吗?
答案 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;