在java中引用变量和变量

时间:2012-03-07 09:12:00

标签: java

我遇到了一个奇怪的奇怪情况。我有3套像这样的字符串

String set1q1="something";    //associated with randomNum=1
String set1q2="something";
String set1q3="something";
String set1q4="something";
... and so on

String set2q1="something";    //randomNum=2
String set2q2="something";
String set2q3="something";
String set2q4="something";
... and so on

String set3q1="something";    //randomNum=3
String set3q2="something";
String set3q3="something";
String set3q4="something";
... and so on

所有这些字符串只初始化一次。现在在我的程序中,我生成1-3之间的随机数。我将这个随机数转换成一个字符串并将其存储在名为set的字符串中。

String set=randomNum.toString();

现在接下来使用“if-else”发送数据(如果randomnum = 1发送set1q1-5,如果randomnum = 2然后发送set2q1-5),我希望使用一行发送相应的数据。

例如:如果选择随机数为2,则必须发送set2q1,其中“2”必须是“set”的值(在上面定义)。

set"set"q1    //where set can be 1,2,3

有没有办法做到这一点?

5 个答案:

答案 0 :(得分:6)

你要求的是不可能的; 1 这不是Java的工作方式。你为什么不只使用数组或集合?

List<List<String>> allTheStrings = new ArrayList<List<String>>();

List<String> myStrings = null;

// Add a subset
myStrings = new ArrayList<String>();
myStrings.add("something");
myStrings.add("something");
myStrings.add("something");
allTheStrings.add(myStrings);

// Add another subset
myStrings = new ArrayList<String>();
myStrings.add("something");
myStrings.add("something");
myStrings.add("something");
allTheStrings.add(myStrings);


...

// Obtain one of the strings
String str = allTheStrings.get(1).get(2);

<子> 1。除了这些变量是类的成员的情况之外,在这种情况下,您可以使用反射。但实际上,不要。

答案 1 :(得分:1)

这是不可能的。在编译期间,局部变量标识符被转换为数字(堆栈偏移)。但是你应该使用数组或集合

答案 2 :(得分:1)

听起来你想用两个索引索引字符串。您应该使用二维String数组:String[][] strings。然后,您可以使用strings[n][m]

访问所需的字符串

如果您需要动态增长2D阵列的尺寸,您可以使用List<List<String>> strings获得相同的效果。您可以使用strings.get(n).get(m)

访问所需的值

如果确实希望通过set2q1这样的组合名称访问您的字符串,那么您只需要一个Map<String, String> strings。然后,您将使用strings.get("set" + m + "q" + n)

访问每个值

答案 3 :(得分:0)

我认为你应该研究一下这样的数组:

String[] strings = new String[]{"xxx", "yyy", "zzz"};
String string = strings[randomNumber];

答案 4 :(得分:0)

使用列表索引

创建一个arraylist和reference