2012-03-30 3 views
3

Кто-нибудь знает, почему это не компилируется?Сравнение двухмерного массива с одномерным массивом в 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

+0

Вы хотите сравнить каждую строку в сетке с блокировщиком [i]? Если это так, вам нужен вложенный цикл –

+0

Я хотел протестировать каждую строку в сетке на блокировщик [i]. – user1299661

ответ

1

Попробуйте это:

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

grid является двумерный массив. По той же причине, что вам нужно сделать это:

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

Он не будет компилироваться, потому что сетка [0] не является строковым типом. Это тип String [] (Array). Переменная grid[0] фактически указывает на массив String[100].

Вы пытаетесь присвоить строку «Hello» к массиву

grid[0]="Hello"; заявление.

Если вы хотите присвоить строку в местоположение в grid, вы должны предоставить два индекса (ов) - следующий законно:

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

Могу ли я предлагаю использовать eclipse или BlueJ редактировать Java код? так что такие основные ошибки отображаются в реальном времени и хорошо объясняются?

+0

Большое вам спасибо! – user1299661

+0

@ user1299661, если ответ был полезен, рассмотрите вопрос о повышении (стрелка слева) или примите ответ - это улучшит ваши шансы получить ответы на вопросы в SO в будущем. –

0

grid[0] - String[] тип, а не String. Так что ваш код должен быть таким

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

"сетка [0] [0] == bloker [0]« Нет! Не делай этого! Это сравнение ссылок, которые не будут равными. Вам нужно использовать сетку [0] [0] .equals (blocker [0]). Это справедливо в целом на Java. – xxpor

+0

@xxpor жаль, что вы правы :) –

+0

Но это очень плохая практика, она не должна быть показана новичкам особенно, а не истина в общем случае. – xxpor

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

    grid[0]="Hello"; 

Там ваша проблема. Вы пытаетесь присвоить строку массиву строк. Подумайте о 2d массиве как массиве массивов.

Вы, вероятно, хотите что-то вроде

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

сетки 2d массив. вы не можете делать, как d [0] = «Привет». Итак, если вы хотите присвоить значение в положении 0

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

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

Первая вещь, которую вы не можете присвоить значение элементу многомерного массива с помощью единого индекса

сетки [0] = «Hello»;
необходимо указать как индексы, такие как сетки [0] [0] = "Hello" это установит 0-й элемент 0-й строки к Hello

Аналогично в то время как compairing если (сетки [0] .equals (blocker [0])) { System.out.print («Готово!»); Здесь вы должны передавать те же индексы (вы не можете сравнить String с объектом Array) if (сетка [0] [0] .equals (blocker [0])) { System.out.print («Done! «);

Смежные вопросы