Сравнение двухмерного массива с одномерным массивом в Java - PullRequest
3 голосов
/ 30 марта 2012

Кто-нибудь знает, почему это не компилируется?

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

Я бы хотел выполнить эту функцию сравнения, используя двумерный массив. Я новичок! Пожалуйста, помоги, если можешь. Заранее спасибо!

Ответы [ 6 ]

1 голос
/ 30 марта 2012

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

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

grid - двумерный массив. По той же причине вам необходимо сделать следующее:

if (grid[0][0].equals(blocker[0]))
0 голосов
/ 30 марта 2012

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

grid [0] = "Hello";
вам нужно указать оба индекса, например, grid [0] [0] = "Hello". При этом для 0-го элемента 0-й строки будет установлено значение Hello

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

0 голосов
/ 30 марта 2012

сетка - это двумерный массив. Вы не можете делать, как d [0] = "Привет". Итак, если вы хотите присвоить значение в 0 позиции

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

 if (grid[0][0].equals(blocker[0])){
System.out.print("Done!");
 }
0 голосов
/ 30 марта 2012
String [][] grid= new String [100][100];

  grid[0]="Hello";

Это твоя проблема. Вы пытаетесь присвоить строку массиву строк. Думайте о 2d массиве как о массиве массивов.

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

grid[0][0]="Hello!";
0 голосов
/ 30 марта 2012

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

grid[0] = new String[100];
grid[0][0] = "Hello";
if (grid[0][0].equals(bloker[0])) {
    //your logic...
}
0 голосов
/ 30 марта 2012

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

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

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

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

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

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

...