gpt4 book ai didi

java - 如何使我的代码从菜单代码中的一个空白变为另一个空白,并使其随机生成输入?

转载 作者:行者123 更新时间:2023-12-01 16:59:20 25 4
gpt4 key购买 nike

我的菜单代码(主)和 testMatrix 代码无法正常工作,菜单代码仅不正确地转到 GetMatrix 方法(它让用户输入 4x4 矩阵而不是所需的 3X4,并且 testMatrix 代码甚至不正确)工作,因为它只是使用用户输入法。该程序要求我更改许多程序头,以使代码运行时不会崩溃。

package sumelementsbycolumn;

import java.util.Random;
import java.util.Scanner;

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 < matrix[0].length; col++)
{
System.out.println(
"Sum of the elements at column " + col +
" is " + sumColumn(matrix));
}
}
//========================= 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)
{
double sum = 0;
int columnIndex = 0;
for (double[] m1 : m)
{
sum += m1[columnIndex];
}
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;
}

}

最佳答案

我稍微调整了代码。这应该可行。问题出在 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

关于java - 如何使我的代码从菜单代码中的一个空白变为另一个空白,并使其随机生成输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61536046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com