Java - запись нескольких пользовательских входов на другой вход - PullRequest
0 голосов
/ 29 сентября 2019

Эта программа должна запрашивать имя студента.Затем для каждого студента будут записаны четыре оценки.Затем повторяйте итерацию, пока пользователь не введет «С» для выхода из цикла.Затем распечатайте результаты.Он показывает только последние четыре введенных элемента.Я думаю, что мой цикл не будет выполнять то, что я хочу.Может быть, мне нужен .forEach?После этого я также должен суммировать каждые четыре числа на студента отдельно.Должен ли я иметь другой массив для каждого студента?Вот что у меня есть:

package arrayList;
import java.util.Scanner;
import java.util.ArrayList;

public class TestGrades {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);
ArrayList<String> studentName = new ArrayList<String>(); 
boolean loop = true;
while (loop) {
  System.out.println(" Please Enter Student Name");
  sc.nextLine();

      String student = sc.nextLine();

        if(student.equals("C"))
        {
          break;    
        }
        else
        {
          studentName.add(student);
        }


        ArrayList<Double> studentGrade = new ArrayList<Double>();
    System.out.println("Please enter Student Grade");
    for (int j = 0; j < 4; j++) {

        Double grade = sc.nextDouble();
        studentGrade.add(grade);  
    }    
    System.out.println(studentName);
    System.out.print(studentGrade);
    }
}
}

Я хочу напечатать элементы каждого arrayList в порядке ввода, сначала studentName, а затем studentGrade.Поможет ли .forEach?

1 Ответ

1 голос
/ 29 сентября 2019

Для начала я бы посоветовал пользователям вводить данные, используя класс Console.Также:

  1. При первом вызове sc.nextLine() вы получаете ввод от пользователя и никогда не сохраняете его.
  2. Вы должны инициализировать ArrayList<Double> studentGrade вне цикла,Каждый раз, когда вы зацикливаетесь на вводе, он создает новый список, и вы теряете оценки учеников предыдущего цикла.

Запустите это, если вам нужно снова перейти на Scanner, используйте Scanner.

import java.util.Scanner;
import java.util.ArrayList;
import java.io.Console;

public class Test {

public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ArrayList<String> studentName = new ArrayList<String>(); 
ArrayList<Double> studentGrade = new ArrayList<Double>();
boolean loop = true;

while (loop) {

    System.out.println(" Please Enter Student Name");
    String student = scanner.nextLine();

        if(student.equals("C"))
        {
          break;    
        }
        else
        {
          studentName.add(student);
        }


    System.out.println("Please enter Student Grade");
    for (int j = 0; j < 4; j++) {

        Double grade = Double.parseDouble(scanner.nextLine());
        studentGrade.add(grade);  
    }    

    System.out.println(studentName);
    System.out.print(studentGrade);
  }
}
}
...