2016-12-24 2 views
-4

Для этой программы пользователю предлагается значение для каждой ячейки в массиве, и они должны быть запрещены от ввода значения, которое появляется в другом месте в структуре. Примечание. Я могу использовать массив, а не использовать другую структуру данных.Как вставить уникальное значение в двумерный массив в Java?

Как я могу изменить свой код, чтобы сделать это?

Вот мой код:

public class UniqueArrayAdd { 
    int i, j; 

    public UniqueArrayAdd() { 
    int[][] arr3 = new int[3][3]; 
    Scanner scan = new Scanner(System.in); 

    for (i = 0; i < arr3.length; i++) { 
     for (j = 0; j < arr3.length; j++) { 
      System.out.println("Enter a value"); 
      // What to do to check the duplication 
      // If the input value is not duplicated then insert other wise    //give "Already exist" message 
      arr3[i][j] = scan.nextInt(); 
     } 
    } 
    // For printing array 
    for (i = 0; i < arr3.length; i++) { 
     for (j = 0; j < arr3.length; j++) { 
      System.out.print(arr3[i][j] + "\t"); 
     } 
     System.out.println(""); 
    } 
    } 
    public static void main(String[] args) { 
    new UniqueArrayAdd(); 
    } 
} 
+0

Непонятно, что вы просите. Вы имеете в виду _any_ уникальное значение? Если это так, то для каждой ячейки в прямоугольнике 'wxh' вставьте номер' (x + y * w) '. Таким образом, ваша первая строка получит '0, 1, 2, ... w-1', а ваша вторая строка получит' w, w + 1, w + 2 ... 'и т. Д. Все они будут уникальными, поскольку no число повторяется более одного раза. – halfer

+0

@halfer Я думаю, что значения взяты из сканера, поэтому ручной ввод. Но больше информации было бы действительно полезно! –

+0

@halfer Я имею в виду уникальность в том случае, если одно значение вводится в любом месте в строках или столбцах таблицы, тогда другое время не вставляется снова, например, в двумерный массив 00 или 01 или 10 или 11 и т. Д. При любом индексе. –

ответ

1

Наивный подход перебрать все элементы массива и сравнить. Для этого вы можете «повторно использовать» код, который печатает элементы массива.

Я бы попытался переместить код в отдельный метод для этого. Это может быть, например, return true, если значение содержится, false в противном случае. Что-то вроде этого

boolean exists(final int value) { 
for (i = 0; i < arr3.length; i++) { 
    for (j = 0; j < arr3.length; j++) { 
     if (arr3[i][j]==value) { 
     return true;  
    } 
    } 
    return false; 
} 
+0

Спасибо @Stefan Freitag за ответ. Но, пожалуйста, вы уточните свой ответ, я просто начинающий. –

+0

@AbubakarEhsas Обновлен мой ответ в примере –

+0

Спасибо @Stefan, ваш ответ полезен. –

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