2016-03-27 2 views
0

Я просто хочу начать с того, что все вычисляет точно. Единственные проблемы, с которыми я сталкиваюсь, - это попытаться распечатать 2D-массив, который я ввел, и как отформатировать итоговые значения, которые я получаю для каждого столбца.Проблема с форматированием с добавлением столбцов столбцов по столбцу [Java]

Это часть программы 3 в 1. Для второй части я должен ввести 12 чисел в 2D-массив 3x4. Затем консоль возвращает массив, который я ввел, и столбец суммы по столбцу.

Вот как это должно выглядеть:

Enter 3 rows and 4 columns: 
1 2 3 4 
5 6 7 8 
9 10 11.2 12.5 
You entered: 
1.0 2.0 3.0 4.0 
5.0 6.0 7.0 8.0 
9.0 10.0 11.2 12.5 
The sums are: 
15.0 18.0 21.2 24.5 

Это мой код до сих пор:

else if(choice == 2) { 
      // declare the 3x4 array 
      System.out.print("Enter a 3 by 4 matrix row by row: "); 
      double[][] myArray = new double[3][4]; 
      // set up the array as an input 
      for (int i = 0; i < 3; i++) 
       for (int j = 0; j < 4; j++) 
       myArray[i][j] = input.nextDouble(); 

      feature2(myArray); 

     } // end of choice 2 block 

private static void feature2(double[][] myArray){ 


    System.out.println("You entered: "); 
    // return the entered array in double form 
    for (int i = 0; i < myArray.length; i++) { 
      System.out.print(myArray[i] + " "); 
     } 
    // calculate the sums column by column and display the results 
    for(int column = 0; column < myArray[0].length; column++) { 
     double total = 0; 
     for(int row = 0; row < myArray.length; row++) 
      total += myArray[row][column]; 
     System.out.println("The sums are: " + total); 

    } 
} // end of feature 2 

Как стоит код, это то, что читает на консоли:

Enter a 3 by 4 matrix row by row: 
1 2 3 4 
5 6 7 8 
9 10 11.2 12.5 
You entered: 
[[email protected] [[email protected] [[email protected] The sums are: 15.0 
The sums are: 18.0 
The sums are: 21.2 
The sums are: 24.5 

Как вы можете видеть, он вычисляет правильно, но он не форматируется правильно. Если бы я мог просто помочь с форматированием, я могу взять его отсюда.

ответ

1

Чтобы пройти через двумерный массив, вам понадобится вложенный цикл for. Значение myArray [i] - это только адрес одного из массивов в индексе i. Чтобы получить доступ к элементам массивов в 2D-массиве, вам нужно получить доступ не только к индексу массива, но и к индексу элемента в массиве myArray [row] [column]. Внешний цикл должен проходить через каждую строку (массив), а внутренний цикл должен проходить через каждый столбец (элемент массива) внутри массива. Наконец, после распечатки элементов одного из массивов, новая строка должна быть напечатана для элементов следующего массива. Вот как это должно выглядеть,

System.out.println("You entered: "); 
    // return the entered array in double form 
for (int i = 0; i < myArray.length; i++) { 
    for (int j = 0; i < myArray[i].length; j++){ 
     System.out.print(myArray[i][j] + " "); 
    } 
    System.out.println(); 
} 
System.out.println("The sums are: "); 
// calculate the sums column by column and display the results 
    for(int column = 0; column < myArray[0].length; column++) { 
     double total = 0; 
     for(int row = 0; row < myArray.length; row++) 
      total += myArray[row][column]; 
     System.out.print(total + " "); 

    } 
+0

Спасибо. Осталось только то, что мне нужны суммы, которые должны быть напечатаны на одной строке, как показано в самом конце первого блока «кода» в моем сообщении. –

+0

проверить мой ответ сейчас, я добавил некоторые вещи, касающиеся вашего комментария. –

+0

Спасибо. Это сработало! –

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