Итак, во-первых, у вас есть много чего, что нужно исправить, включая то, что я собираюсь исправить для вас.Если вы хотите вывести все классы в конце вместе, вам придется отредактировать мой код, чтобы сохранить отформатированные строки в массиве, а затем вывести их все вместе.
Я исправил вашу ошибку, добавив scanner.nextLine();
после вашей строки int numberofcourses = scanner.nextInt();
.Вы должны сделать это, потому что scanner.nextInt()
не использует терминатор строки и не переходит на следующую строку, так что это означает, что ваш следующий nextLine()
испортится и попытается ничего не читать.Эта дополнительная строка гарантирует, что Scanner
переместится на следующую строку.
Продолжая, у вас есть целая куча неправильно используемых scanner.hasNextLine();
.Это возвращает логическое условие, которое позволяет узнать, существует ли следующая строка.В настоящее время вы не используете это логическое условие и просто ничего не делаете.Если вы хотите использовать это, вам нужно использовать его либо в операторе if
, либо в цикле while
.Я удалил все эти строки.
Наконец, для форматирования вашего оператора печати используйте String.format()
.Пример того, что я сделал для вывода ваших значений, показан ниже.Вы можете сохранить это в массиве String
и вывести их все вместе позже.Дайте мне знать, если у вас есть другие вопросы.Вот полный код (я проверял его, и он работал нормально):
Scanner scanner = new Scanner(System.in);
//Input the term
System.out.println("Please enter the term of your grade calculation (for example, Fall 2015): ");
String term = scanner.nextLine();
//Input the number of courses that the student is enrolled in
System.out.println("Please enter the number of courses that you are enrolled in "+term+": ");
int numberofcourses = scanner.nextInt();
scanner.nextLine();
//Declaration
String a[] = new String[numberofcourses];
//Arrays for class number, description, units, grade, grades point
//Here, input class number, description, units, and grades
for(int i = 0; i < numberofcourses; i++)
{
System.out.println("Please enter the #"+(i+1)+" class name: ");
String ClassName = scanner.nextLine();
System.out.println("Please enter the #"+(i+1)+" description: ");
String Description = scanner.nextLine();
System.out.println("Please enter the #"+(i+1)+" units: ");
int Units = scanner.nextInt();
System.out.println("Please enter the #"+(i+1)+" grades: ");
int Grades = scanner.nextInt();
System.out.println("Class Grades - "+term+" Term");
System.out.println("Office Grades");
System.out.println(String.format("Class: %s Description: %s Units: %d Grade: %d Grade Points", ClassName, Description, Units, Grades));
}
А вот как выглядела моя консоль:
Please enter the term of your grade calculation (for example, Fall 2015):
Fall 2012
Please enter the number of courses that you are enrolled in Fall 2012:
1
Please enter the #1 class name:
Comp Sci 2001
Please enter the #1 description:
Computer Science
Please enter the #1 units:
3
Please enter the #1 grades:
95
Class Grades - Fall 2012 Term
Office Grades
Class: Comp Sci 2001 Description: Computer Science Units: 3 Grade: 95 Grade Points
Очевидно, что выходные данные могут быть отформатированы в любомкак вам нравится, соответственно, это просто быстрый макет.