0

と仮定すると、私はいくつかの変数を持っています:

String x="abcd";
String y="qwert";
String z="mnvji";

もっと...

ユーザーからの入力を受け取ります。ユーザーが「x」を入力した場合、その文字列を出力します。つまり、「abcd」を出力します。ユーザーが「y」を入力した場合、「qwert」などを出力します。スイッチやifを使用せずに実行する方法はありますか?

よろしくお願いします。

4

9 に答える 9

6

入力文字列から結果へのマップを作成できます。マップを初期化します。

Map<String, String> map = new HashMap<String, String>();
map.put("x", "abcd");
map.put("y", "qwert");
map.put("z", "mnvji");

そして、ユーザーからの入力からの結果を印刷したい場合:

Scanner s = new Scanner(System.in);

while (s.hasNextLine())
    System.out.println(map.get(s.nextLine()));
于 2012-08-29T11:37:10.023 に答える
4

ローカル変数名は実行時に使用できず、その名前を知っている読み取りフィールドにはある程度の反映が必要です(@amitの回答を参照)。マップが必要です:

Map<String, String> map = new HashMap<>();
map.put("x", "abcd");
map.put("y", "qwert");
map.put("z", "mnvji");

次に、そのマップから値を取得します。

String value = map.get(userInput);

valuenullのいずれにも一致しない場合になりますx/y/z

于 2012-08-29T11:38:12.087 に答える
2

そのようにアプローチできるので、

String input[]=new String['z'];
 input['X']="abcd";
 input['Y']="qwert";
 input['Z']="mnvji";
 System.out.println(input['X']);

しかし、それはいくつかの制限の下になります

于 2012-08-29T12:05:45.153 に答える
1

キーと値のペアの実装を使用したマップコレクションは、問題を解決します。

変数x、y、zをキーとして、 "abcd"、..を値として配置します。

入力値に従って特定のキーから値を取得します。

Map<String, String> map = new HashMap<String, String>();
map.put("x", "abcd");
map.put("y", "qwert");
map.put("z", "mnvji");

価値を得るには

文字列値=map.get(inputValue)。

于 2012-08-29T11:39:00.900 に答える
0

変数セットを(key、value)ペアとしてHashMapに入れ、ユーザーがキーを入力したときに特定のキーの値を取得するだけです。

于 2012-08-29T11:38:02.650 に答える
0

x、y、zがインデックスである文字列配列を作成し、コンテンツを比較的格納します...

ユーザー入力を取得し、それをインデックスとして配列に渡します。取得します。

于 2012-08-29T11:40:10.963 に答える
0

他の回答で示唆されているようにオブジェクト変数(フィールド)を使用する以外に選択肢がない場合は、リフレクション、具体的にはandメソッドMapを使用することをお勧めします-Class.getField()Class.getDeclaredField()

Field f = MyClass.class.getDeclaredField("x");
System.out.println(f.get(myObject));

MyClassクラス名はどこにありmyObject、値を取得するオブジェクトはです。

このアプローチでは、フィールドを追加することはできませんが、既存のフィールドのみを取得できることに注意してください。

于 2012-08-29T11:43:53.967 に答える
0

スイッチやifを本当に使用したくない場合(そしてマップを含めると仮定します)、リフレクションを使用してすべての変数の名前を取得し、それらに印刷するものを決定する必要があります。基本は次のとおりです。

Class yourClass = Class.forName("yourpackagename.YourClassName")
Field[] allFields = yourClass.getDeclaredFields();
String[] fieldNames = new String[allFields.length];
for(int i = 0; i < fieldNames.length; i++)
{
   fieldNames[i] = allFields [i].getName();
}

//Get name of field user wants to display, and look it up in
//the fieldNames array to get the index of it, store this index

Object instance = yourClass.newInstance();
System.out.println(allFields[indexToDisplay].get(instance));

もちろん、これはやり過ぎかもしれません。

于 2012-08-29T11:48:17.047 に答える
0
Map<String, String> map = new HashMap<>();
map.put("x", "abcd");
map.put("y", "qwert");
map.put("z", "mnvji");
Scanner s = new Scanner(System.in);
while (s.hasNextLine())
System.out.println(map.get(s.nextLine()));

おそらく動作します。

于 2012-08-31T12:17:06.463 に答える