2012-03-30 80 views
3

有人知道为什么不能编译?将2维数组与Java中的单维数组进行比较

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

我想用2维数组来执行这个比较函数。我是新手!如果可以的话请帮忙。提前致谢!

+2

'grid [0]'是字符串数组。将字符串分配给字符串数组是不可能的。 – turbanoff 2012-03-30 03:51:04

+0

你想比较网格中的每个字符串到拦截器[i]吗?如果是这样,你需要一个嵌套循环 – 2012-03-30 03:51:43

+0

我想测试每个字符串在网格中阻塞[i]。 – user1299661 2012-03-30 04:03:25

回答

1

试试这个:

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

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

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

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

您正试图通过

grid[0]="Hello";语句的字符串“你好”分配给数组。

如果你想为一个字符串在grid分配到一个位置,您必须提供两个指数(S) - 以下是合法的:

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

我可以建议使用eclipseBlueJ编辑您的Java码?以便实时显示这些基本错误并进行解释?

+0

非常感谢你! – user1299661 2012-03-30 04:08:03

+0

@ user1299661,如果答案有帮助,请考虑upvote(左侧箭头)或接受答案 - 这将提高您将来在SO中回答问题的机会。 – 2012-03-31 17:34:45

0

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

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

“grid [0] [0] == bloker [0]”不!不要这样做!这是比较引用,这将不相等。你需要使用grid [0] [0] .equals(blocker [0])。在Java中这一般是正确的。 – xxpor 2012-03-30 03:52:28

+0

@xxpor对不起,你是对的:) – 2012-03-30 03:55:07

+0

但这是非常糟糕的做法,它不应该显示给一个新手特别是,并且在一般情况下不正确。 – xxpor 2012-03-30 03:55:26

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

    grid[0]="Hello"; 

有你的问题。您正尝试将字符串分配给字符串数组。将2d数组看作一个数组数组。

你可能要像

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

网格是二维数组。你不能像d [0] =“你好”那样做。因此,如果要在0位置分配值

d[0][0] = "Hello"; 

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

第一件事你不能使用单指数

网格将值分配给所述多维数组的元素[0] =“你好”;
你需要指定索引像电网[0] [0] =“你好” 这将第0行的第0个元素设置为你好

同样而compairing 如果(电网[0] .equals( blocker [0])){ System.out.print(“Done!”); 你要在这里传递相同的指标(您不能将字符串比较一个数组对象) 如果(电网[0] [0] .equals(拦截[0])){ 是System.out.print(“成交! “);