Я немного подправил код. Это должно работать. Проблема заключается в методе sumColumn, для которого индекс столбца всегда устанавливается равным 0.
import java.util.Random;
import java.util.Scanner;
import java.util.Arrays;
public class SumElementsByColumn
{
private final static Scanner myScan = new Scanner(System.in);
//========================= void main() ==============================
public static void main(String[] args)
{
char choice;
do
{
final int ROWS = 3;
final int COLUMNS = 4;
double[][] matrix = new double[ROWS][COLUMNS];
choice = getMenu();
switch (choice)
{
case '1':
{
matrix = GetMatrix(matrix);
// sumColumn(matrix);
sumPrint(matrix);
break;
}
case '2':
{
matrix = testMatrix(matrix);
// sumColumn(matrix);
sumPrint(matrix);
break;
}
case '0':
System.out.println("\n==================================");
System.out.println("\n= Thank You for Using The ="
+ "\nSum Elements By Column Determiner");
System.out.println("\n= Goodbye! =");
System.out.println("\n==================================");
}
}while(choice != '0');
}
//========================= char GetMenu() ===========================
private static char getMenu()
{
System.out.print("===================================\n"
+ "=Sum Elements By Column Determiner=\n"
+ "===================================\n\n"
+ "\t(1) Input 3 rows of integers\n"
+ "\t(2) Test system using random numbers\n"
+ "\t(0) Exit the program\n"
+ "Choose: ");
char choice = myScan.next().toUpperCase().charAt(0);
return choice;
}
//========================= void sumPrint() ==============================
private static void sumPrint(double[][] theMatrix)
{
// Read a 3-by-4 matrix
final int ROWS = 3;
final int COLUMNS = 4;
// double[][] matrix = new double[ROWS][COLUMNS];
//GetMatrix(matrix);
// Display the sum of each column
for (int col = 0; col < theMatrix[0].length; col++)
{
System.out.println(
"Sum of the elements at column " + col +
" is " + sumColumn(theMatrix,col));
}
}
//========================= double getMatrix() ===========================
private static double[][] GetMatrix(double[][] matrix)
{
final int ROWS = 3;
final int COLUMNS = 4;
double[][] m = new double[ROWS][COLUMNS];
// Prompt the user to enter a 3-by-4 matrix
System.out.println("Enter a " + ROWS + "-by-" +
COLUMNS + " matrix row by row:");
for (int row = 0; row < m.length; row++) {
for (int col = 0; col < m[row].length; col++) {
m[row][col] = myScan.nextDouble();
}
}
while(!myScan.hasNextDouble())
{
System.out.println("That is not a valid number!");
System.out.println("Re-Enter the Matrix Values: ");
myScan.next();
}
return m;
}
//========================= double sumColumn() ===========================
public static double sumColumn(double[][] m,Integer col)
{
double sum = 0;
int columnIndex = 0;
// System.out.println(Arrays.deepToString(m));
for (double[] m1 : m)
{
// System.out.println(" sumcolumn "+m1[col]);
sum += m1[col];
}
return sum;
}
//========================= double testMatrix() ===========================
private static double[][] testMatrix(double[][] blankMatrix)
{
Random rnd = new Random();
int count = 0;
for (double[] blankMatrix1 : blankMatrix)
{
for (int col = 0; col < blankMatrix.length; col++)
{
{
blankMatrix1[col] = rnd.nextInt(100);
}
}
}
return blankMatrix;
}
}
Входной массив для теста:
===================================
=Sum Elements By Column Determiner=
===================================
(1) Input 3 rows of integers
(2) Test system using random numbers
(0) Exit the program
Choose: 1
Enter a 3-by-4 matrix row by row:
1 2 3 4
5 6 7 8
9 10 11 12
Выходные данные:
Sum of the elements at column 0 is 15.0
Sum of the elements at column 1 is 18.0
Sum of the elements at column 2 is 21.0
Sum of the elements at column 3 is 24.0