Как напечатать оператор if внутри цикла for (массивы) - PullRequest
0 голосов
/ 21 июня 2019

Мне интересно, как я могу напечатать элемент в операторе if внутри цикла for.Когда я распечатываю массив, все в порядке, за исключением элемента в операторе if (который является gradeValue).Он просто печатает самый последний элемент и копирует этот элемент для предыдущих строк.

    for(int i = 0; i < numberofcourses; i++)
    {
        scanner.nextLine();
        System.out.println("Please enter your #"+(i+1)+" class name: ");
        ClassName[i] = scanner.nextLine();
        System.out.println("Please enter your #"+(i+1)+" class description: ");
        Description[i] = scanner.nextLine();
        System.out.println("Please enter your #"+(i+1)+" class units: ");
        Units [i] = scanner.nextInt();
        scanner.nextLine();
        System.out.println("Please enter your #"+(i+1)+" class grade: ");
        grade[i] = scanner.nextLine();

        if (grade[i].equals ("A"))
            gradeValue= 4.00;
          else if (grade[i].equals("A-"))
            gradeValue= 3.67;
          else if (grade[i].equals("B+"))
            gradeValue = 3.33;
          else if (grade[i].equals("B"))
            gradeValue = 3.00;
          else if (grade[i].equals ("B-"))
            gradeValue = 2.67;
          else if (grade[i].equals("C+"))
            gradeValue = 2.33;
          else if (grade[i].equals("C"))
            gradeValue = 2.00;
          else if (grade[i].equals ("D+"))
          gradeValue = 1.33;
          else if (grade[i].equals ("D"))
            gradeValue = 1.00;
          else if (grade[i].equals ("F"))
            gradeValue = 0;
          else if (grade[i].equals ("FX"))
            gradeValue = 0;
          else
            System.out.println ("Invalid Grade");
            finalgrade = gradeValue * Units[i];
    }

Вот пример вывода.Как вы можете видеть, GradePoint остается на уровне 3.33, то есть B +, самый последний элемент, который я ввел.Там нет никаких признаков A и B-, которые я вводил ранее.: (

Please enter the term of your grade calculation (for example, Fall 2015): 
Fall 2019
Please enter the number of courses that you are enrolled in Fall 2019: 
3
Please enter your #1 class name: 
FIN301
Please enter your #1 class description: 
Personal Finance
Please enter your #1 class units: 
3
Please enter your #1 class grade: 
A

Please enter your #2 class name: 
BUS314
Please enter your #2 class description: 
Business Finance
Please enter your #2 class units: 
3
Please enter your #2 class grade: 
B-

Please enter your #3 class name: 
BUS313
Please enter your #3 class description: 
Economics Finance
Please enter your #3 class units: 
3
Please enter your #3 class grade: 
B+
Class Grades - Fall 2019 Term
Office Grades
             Class               | Description               |  Units               |  Grade               | Gradepoint
------------------------------------------------------------------------------------------------------------------
            FIN301               | Personal Finance               |      3               |      A               |   3.33
            BUS314               | Business Finance               |      3               |     B-               |   3.33
            BUS313               | Economics Finance               |      3               |     B+               |   3.33

1 Ответ

0 голосов
/ 21 июня 2019

Ваша основная проблема в том, что на каждой итерации вы вычисляете finalgrade, но вы не сохраняете его в массиве, как все остальные, поэтому он перезаписывается на следующей итерации.
Таким образом, вы получите последнее значение finalgrade.
Измените finalgrade на массив и используйте его следующим образом:

finalgrade[i] = gradeValue * Units[i];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...