2016-11-18 6 views
0

У меня возникают проблемы с пользовательским вводом в java, надеюсь, что кто-то может помочь :) Пользователь объявляет, насколько большой будет массив 2d (число d является стороной квадрата массив), затем вводит число «n», которое сообщает программе, сколько входов чисел будет там, а затем необходимо ввести эти числа (например, если n = 4, вход должен быть таким же: 5 17 3 20 . я уже написал то же самое для одного массиваПользовательские номера ввода в 2-мерный массив в java

for(i=0;i<=n;i++) { 
    arr[i]=sc.nextInt(); 
} 

строки, но у меня возникают проблемы, делая в основном то же самое для 2d массива. идеи?

ответ

0

Использовать две вложенные петли и индекс, такие как arr[i][j]

+0

в порядке, поэтому в обоих случаях для циклов i и j

+0

Да, поскольку ваш массив квадратный, вы можете использовать n в качестве предела для обеих петель. – retrospectacus

+0

ОК, но что, если он позволяет мне вставить примерно 20 чисел? –

0

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

for (int i = 0; i < length; i ++){ 
    for (int j = 0; j < width; j ++){ 
    if (counter < userInput){ 
    counter++; 
    arr[i][j] = value; 
     } else { 
     break;   
     } 
    } 
} 
+0

, так что значение здесь «n» чисел от пользовательского ввода? –

+0

Да, это так. Вы должны хранить это где-то заранее. – Jay

+0

Вещью с массивами является то, что вы должны определить размер перед рукой, поэтому, если вы знаете, что у вас будет определенное количество ввода от пользователя, вы можете просто вызвать функцию 'sc.nextInt()' в цикле. Таким образом, это будет по существу «arr [i] [j] = sc.nextInt();' – Jay

0
  int d=sc.nextInt(); //length of rows and columns 
      int n=sc.nextInt(); //user input how many numbers 



      int[][] array=new int[d][d]; //length and heigth of array 

      for (int i=0;i<d;i++) { 
        for(int j=0;j<d;j++) { 
         array[i][j]=sc.nextInt(); 
        } 
      } 



      int distance=0; 
      int c=0; 
       for(int i=0;i<d;i++){ 
        for(int j=0;j<d;j++){ 
         array[i][j]=c; 
         c++; 




        } 

       } 

, что в конце концов STH еще, я просто хотел на все это видно, если возможно, я что-то пропустил в другом месте.

+0

Размер каждой стороны квадратного массива (d) определяет количество значений, которые необходимо ввести. Я не уверен, что делает вторая часть вашей программы, но мы можем видеть, что n («сколько чисел») нигде не используется. Если вам нужно знать, сколько чисел, вы можете умножить d на себя. – retrospectacus

+0

ooh хорошо. но так как я могу сделать n частью этого, чтобы программа позволяла мне вводить n чисел? –

+0

Ну, вы можете рассчитывать от 1 до n, принимая ввод. Однако эти входы не могут быть надежно сохранены в вашем квадратном массиве, так как n и d * d могут быть разными значениями. Ваша цель неясна. – retrospectacus