2012-03-30 81 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(「成交! 「);