我是java的新手,我正在尝试将字符串的值赋给循环中的另一个字符串,这就是示例:
public static void main(String[] args) {
int j = 100;
int k = 20;
String n0 = "&";
String n1 = "|";
String n2 = "^";
String n3 = "~";
for(int n = 0; n < 4; n++)
{
if(n < 3){
String operator = "n"+n;
System.out.println(operator);
}
}
}
我期待这样的结果:
& | ^
但我得到了这个实际结果:
n0 n1 n2
我怎样才能得到预期的结果?任何人都可以解释为什么我得到这个结果?
谢谢
您无法使用其名称调用变量,例如,您需要将它们存储在数组中:
String[] operators = {n0, n1, n2, n3};
// or directly
//String[] operators = {"&", "|", "^", "~"};
for (int n = 0; n < 4; n++) {
if (n < 3) {
String operator = operators[n];
System.out.print(operator);
// or directly
//System.out.print(operators[n]);
}
}
您尝试按名称访问变量,这是不可能的,相反,您可以创建一个包含密钥n1, n2, ..
的映射,以及预期值,如下所示:
Map<String, String> map = Map.of("n0", "&", "n1", "|", "n2", "^", "n3", "~");
那么你可以得到价值:
String operator = "n" + n;
System.out.println(map.get(operator));
完整的代码可以是这样的:
Map<String, String> map = Map.of("n0", "&", "n1", "|", "n2", "^", "n3", "~");
for (int n = 0; n < map.size(); n++) {
if (n < 3) {
System.out.println(map.get("n" + n));
}
}
您可能想要使用数组,请参阅:
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html
尝试使用“Array Demo”示例,但更改行
int[] anArray;
成:
String[] anArray;
并修复它可能产生的错误。
Toodles
你正在做的是打印与当前循环索引连接的字符串“n”。对于索引0,1和2,你运行这个循环3次。这就是你得到“n0”“n1”和“n2”的原因。如果您确实想要使用循环访问变量,则需要将它们放在合适的数据结构中,如数组(如其他人所述)。如果要将Strings放入数组,可以使用以下示例:
String n0 = "&";
String n1 = "|";
String n2 = "^";
String n3 = "~";
String[] operators = {n0, n1, n2, n3};
for (int i = 0; i < operators.length; i++) {
String operator = operators[i];
System.out.println(operator);
}
此代码将您的变量添加到数组中,然后遍历此数组并打印保存在数组中的值,即您的变量。