Мне нужна помощь для распечатки массивов по строкам, но это 2 разных массива ...Как распечатать массив на основе результата, который я хочу? Row by Row
В настоящее время мои коды позволяют мне печатать все имена, следить за результатами, следовать по средним баллам и сортам. Однако я должен был бы выводить их на основе имени студента и оценка .. Посмотрите на картину, например ...
Текущая ситуация: Current
Ожидаемый выход ..: Expected
public static void main(String[] args) {
// 1D Array for Student Names
String[] names = new String[10];
//2D Array for test score
double[][] scores = new double[10][5];
//1D Array for grades
char[] grades = new char[5];
getNames(names);
getScores(scores);
print1Array(names);
print2Array(scores);
calculateAvg(scores);
classAvg(scores, names);
} // PSVMain
// Using FOR loop to read and store each name
public static void getNames(String[] data) {
Scanner kb = new Scanner(System.in);
for (int r = 0; r < data.length; r++) {
System.out.println("Enter Student names : ");
data[r] = kb.next();
} // For R
} // getInput
// Using FOR loop to read and store each scores
public static void getScores(double[][] data) {
Scanner kb = new Scanner(System.in);
for (int r = 0; r < data.length; r++) {
System.out.println("Enter number for row " + (r + 1));
for (int c = 0; c < data[r].length; c++) {
System.out.println("Enter number for column " + (c + 1));
data[r][c] = kb.nextInt();
} // For C
} // For R
} // getInput
public static void classAvg(double[][] data, String[] name) {
double[] allAverage = new double[data.length];
double totalAvg = 0;
double classAvg = 0;
double average = 0;
for (int r = 0; r < data.length; r++) {
double total = 0;
for (int c = 0; c < data[r].length; c++) {
total = total + data[r][c];
} // For C
average = total/data[r].length;
// This is the Average for each ROW
allAverage[r] = average;
totalAvg = totalAvg + allAverage[r];
} // For R
classAvg = (totalAvg/name.length);
System.out.println("The class Average score is : " + classAvg);
} // classAvg
// This method will calculate the Average and assigning Grades
public static void calculateAvg(double[][] data) {
double[] allAverage = new double[data.length];
char[] allGrades = new char[data.length];
double average = 0;
for (int r = 0; r < data.length; r++) {
double total = 0;
for (int c = 0; c < data[r].length; c++) {
total = total + data[r][c];
} // For C
average = total/data[r].length;
// This is the Average for each ROW
allAverage[r] = average;
if (average >= 85 && average <= 100) {
allGrades[r] = 'A';
} else if (average >= 75 && average <= 84) {
allGrades[r] = 'B';
} else if (average >= 65 && average <= 74) {
allGrades[r] = 'C';
} else if (average >= 50 && average <= 64) {
allGrades[r] = 'D';
} else if (average < 50) {
allGrades[r] = 'F';
} // If
// Print each ROWS average
System.out.println("The average for this row is : " + average);
// Print each ROWS grades
System.out.println("The Grades for this row is : " + allGrades[r]);
System.out.println();
} // For R
} // Grades
// This method allows it to print 1D Array
public static void print1Array(String[] data) {
for (int r = 0; r < data.length; r++) {
System.out.print("The student names are " + data[r] + " ");
System.out.println();
} // For R
} //print 1D Array
// This method allows it to print 2D Array
public static void print2Array(double[][] data) {
System.out.println();
System.out.println("This are the respective student's score");
for (int r = 0; r < data.length; r++) {
for (int c = 0; c < data[r].length; c++) {
System.out.print(data[r][c] + " ");
} // For C
System.out.println();
} // For R
} // Print 2D Array
Так же, как и в виде sidenode, вы можете создать класс 'Student' для хранения каждого из данных Student, так что у вас не было бы нескольких массивов, которые просто связаны с индексом theyr, чтобы представлять« Student ». Там вы можете легко реализовать методы, чтобы отдельно распечатать данные о студентах, которые на самом деле вы могли бы использовать здесь. – SomeJavaGuy
используйте один цикл для печати обоих массивов –
В вашем дизайне используется так называемое «параллельные массивы». Это сильный анти-шаблон, т. Е. Дизайн, которого следует избегать любой ценой, особенно на объектно-ориентированном языке, таком как Java. Он оставлен с 1960-х годов, когда в Фортране не было данных, кроме массивов. Возьмите предложение @ KevinEsche и определите класс для хранения всей информации для ученика. –