有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java:将字符串的值分配给循环中的新字符串

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

我怎样才能得到预期的结果?有人能解释为什么我会得到这个结果吗

谢谢


共 (3) 个答案

  1. # 1 楼答案

    您要做的是打印与当前循环索引连接的字符串“n”。对于索引0、1和2,运行此循环3次。这就是为什么结果是“n0”、“n1”和“n2”。如果你真的想通过一个循环访问你的变量,你需要把它们放在一个合适的数据结构中,比如数组(如其他人所说)。如果要将字符串放入数组,可以使用以下示例:

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

    这段代码将变量添加到数组中,然后迭代该数组,并打印保存在数组中的值,即变量

  2. # 2 楼答案

    您尝试按名称访问变量,但这是不可能的,相反,您可以创建一个包含键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));
        }
    }
    
  3. # 3 楼答案

    不能使用变量名调用变量,例如,需要将它们存储在数组中:

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