#java #loops #switch-statement #gpa
Вопрос:
Как я могу построить свой цикл for в этом калькуляторе GPA? Совершенно новый для Java, и для нашего класса мы обязаны 4 раза запрашивать оценку пользователя и зачетные часы, а затем вычислять их среднее значение. Нам было поручено использовать операторы переключения и циклы, но не много других инструкций. Мы только что узнали о for, while и делаем циклы. Вот что у меня есть до сих пор, не знаю, что делать дальше.
Вот как должен выглядеть результат.
public static void main(String[] args) { String grade = ""; int creditHour = 0; int pointsPerCourse = 0; double gpa = 0.0; Scanner scnr = new Scanner(System.in); System.out.println("tttpointsPerCourse Calculator"); System.out.println("This program will calculate pointsPerCourses based on course grades"); for (); { System.out.print("Enter grade: "); grade = scnr.nextLine(); System.out.print("Enter number of credits for grade: "); creditHour = Integer.parseInt(scnr.nextLine()); } switch (grade) { case "A": pointsPerCourse = 4 * creditHour; case "B": pointsPerCourse = 3 * creditHour; case "C": pointsPerCourse = 2 * creditHour; case "D": pointsPerCourse = 1 * creditHour; default: pointsPerCourse = 0 * creditHour; } gpa = (double) pointsPerCourse / creditHour; System.out.printf("The GPA is %.1f ", gpa); scnr.close(); }
Комментарии:
1. Работая с а
Scanner
, вам, вероятно, понадобитсяwhile
петля.
Ответ №1:
Я думаю, вы пытаетесь сделать это: повторите цикл 4 раза и добавьте баллы и кредитные часы для усреднения
import java.util.Scanner; class Prog { public static void main(String[] args) { String grade = ""; int creditHour = 0; int creditHourSum = 0; int pointsPerCourse = 0; double gpa = 0.0; Scanner scnr = new Scanner(System.in); System.out.println("tttpointsPerCourse Calculator"); System.out.println("This program will calculate pointsPerCourses based on course grades"); for (int i = 0; i lt; 4; i ) { System.out.print("Enter grade: "); grade = scnr.nextLine(); System.out.print("Enter number of credits for grade: "); creditHour = Integer.parseInt(scnr.nextLine()); creditHourSum = creditHour; switch (grade) { case "A": pointsPerCourse = 4 * creditHour; break; case "B": pointsPerCourse = 3 * creditHour; break; case "C": pointsPerCourse = 2 * creditHour; break; case "D": pointsPerCourse = 1 * creditHour; break; default: pointsPerCourse = 0 * creditHour; } System.out.println(pointsPerCourse); } gpa = (double) pointsPerCourse / creditHourSum; System.out.println(pointsPerCourse ", " creditHourSum); System.out.printf("The GPA is %.1f ", gpa); scnr.close(); } }
выход
This program will calculate pointsPerCourses based on course grades Enter grade: A Enter number of credits for grade: 4 16 Enter grade: E Enter number of credits for grade: 4 16 Enter grade: B Enter number of credits for grade: 4 28 Enter grade: C Enter number of credits for grade: 3 34 34, 15 The GPA is 2.3
Комментарии:
1. Ух ты, спасибо тебе огромное! Я определенно забыл о » =»…
2. @ryanmonty42 Не могли бы вы, пожалуйста, принять ответ, если он вам подходит?
Ответ №2:
Это не голанг, вы не можете использовать такой for
цикл, и вы хотите поместить свой корпус переключателя в цикл. Кто — то подсластил while
цикл, но так как вы хотите сделать цикл только 4 раза, правильный for
цикл сделает это за вас.
for(int i = 0, i lt; 4, i ){ System.out.print("Enter grade: "); grade = scnr.nextLine(); System.out.print("Enter number of credits for grade: "); creditHour = Integer.parseInt(scnr.nextLine()); switch (grade) { case "A": pointsPerCourse = 4 * creditHour; case "B": pointsPerCourse = 3 * creditHour; case "C": pointsPerCourse = 2 * creditHour; case "D": pointsPerCourse = 1 * creditHour; default: pointsPerCourse = 0 * creditHour; } }
Комментарии:
1. Ах, я понимаю, спасибо вам! Что меня смущало, так это то, что нужно было вставить в цикл for, я думал, что должен был вставить туда какую-то строку, но я должен придерживаться переменных «int i».