Java:将string的值赋给循环中的新字符串for

问题描述 投票:-2回答:4

我是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

我怎样才能得到预期的结果?任何人都可以解释为什么我得到这个结果?

谢谢

java
4个回答
0
投票

您无法使用其名称调用变量,例如,您需要将它们存储在数组中:

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]);
    }
}

0
投票

您尝试按名称访问变量,这是不可能的,相反,您可以创建一个包含密钥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));
    }
}

0
投票

您可能想要使用数组,请参阅:

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html

尝试使用“Array Demo”示例,但更改行

    int[] anArray;

成:

    String[] anArray;

并修复它可能产生的错误。

Toodles


0
投票

你正在做的是打印与当前循环索引连接的字符串“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);
}

此代码将您的变量添加到数组中,然后遍历此数组并打印保存在数组中的值,即您的变量。

© www.soinside.com 2019 - 2024. All rights reserved.