我遇到了一个奇怪的奇怪情况。我有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
有没有办法做到这一点?
答案 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