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>. にペア{"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++;
}
于 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

整数を文字列に連結して、e + "1" が変数 e1 を評価することを期待することはできません。すべての文字列変数を配列に入れて反復する必要があります

        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 に答える