【问题标题】:Comparing a 2 dimensional array to a single dimensional array in Java将二维数组与Java中的一维数组进行比较
【发布时间】:2012-04-13 18:30:07
【问题描述】:

有谁知道为什么这不能编译?

public class ArrayCompare{

   public static void main (String []args){

      String words= "Hello this is a test";

      String delimiter=" ";
      String [] blocker=words.split(delimiter);

      String [][] grid= new String [100][100];

      grid[0]="Hello";

           if (grid[0].equals(blocker[0])){
                 System.out.print("Done!");
   }
        }
             }

我想使用二维数组执行此比较功能。我是新手!如果可以的话请帮忙。提前致谢!

【问题讨论】:

  • grid[0] 是字符串数组。将字符串分配给字符串数组是不可能的。
  • 您想将网格中的每个字符串与 blocker[i] 进行比较吗?如果是这样,您需要一个嵌套循环
  • 我想将网格中的每个字符串测试为 blocker[i]。

标签: java arrays comparison 2d multidimensional-array


【解决方案1】:

它不会编译,因为 grid[0] 不是 String 类型。 它是 String[] (Array) 类型。变量grid[0] 实际上指向一个String[100] 数组。

您正在尝试通过

将字符串“Hello”分配给数组

grid[0]="Hello"; 声明。

如果要将字符串分配给grid 中的位置,则必须提供两个索引 - 以下是合法的:

grid[0][0]="Hello";

我可以建议使用eclipseBlueJ 来编辑您的Java 代码吗?以便实时显示这些基本错误并得到很好的解释?

【讨论】:

  • @user1299661,如果答案有帮助,请考虑投票(左箭头)或接受答案 - 这将提高您将来在 SO 中获得问题解答的机会。
【解决方案2】:

grid[0]String[] 类型,而不是 String。所以你的代码应该是这样的

grid[0] = new String[100];
grid[0][0] = "Hello";
if (grid[0][0].equals(bloker[0])) {
    //your logic...
}

【讨论】:

  • "grid[0][0] == bloker[0]" 不!不要这样做!这是比较参考,这将不相等。您需要使用 grid[0][0].equals(blocker[0])。这在 Java 中通常是正确的。
  • 但这是非常糟糕的做法,尤其不应该向新手展示,在一般情况下也不正确。
【解决方案3】:

试试这个:

grid[0][0]="Hello";

grid 是一个二维数组。出于同样的原因,您需要这样做:

if (grid[0][0].equals(blocker[0]))

【讨论】:

    【解决方案4】:
    String [][] grid= new String [100][100];
    
      grid[0]="Hello";
    

    你的问题。您正在尝试将字符串分配给字符串数组。将二维数组视为数组的数组。

    你可能想要类似的东西

    grid[0][0]="Hello!";
    

    【讨论】:

      【解决方案5】:

      grid 是二维数组。你不能像 d[0] = "Hello" 那样做。所以,如果你想在 0 位置赋值

      d[0][0] = "Hello";
      
       if (grid[0][0].equals(blocker[0])){
      System.out.print("Done!");
       }
      

      【讨论】:

        【解决方案6】:

        首先你不能使用单个索引为多维数组的元素赋值

        grid[0]="你好";
        您需要指定两个索引,例如 grid[0][0] = "Hello" 这会将第 0 行的第 0 个元素设置为 Hello

        同样在比较时 if (grid[0].equals(blocker[0])){ System.out.print("完成!"); 您必须在此处传递相同的索引(您不能将字符串与数组对象进行比较) if (grid[0][0].equals(blocker[0])){ System.out.print("完成!");

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-10-22
          • 2013-05-19
          • 1970-01-01
          • 2020-03-06
          • 2021-02-13
          • 1970-01-01
          • 2021-11-24
          • 1970-01-01
          相关资源
          最近更新 更多