繁体   English   中英

Java - 如何在我的程序中显示我的每个成绩的字母成绩,而不仅仅是我的最后一个成绩?

[英]Java - How can I display a letter grade for each of my grades in my program rather than just my last one?

在我的大学作业中,我必须提示一个分数并让用户输入 6 次,然后在每个分数旁边显示一个字母分数,然后显示平均值。 我终于能够正确显示每个标记,但最后一个条目的字母等级显示为每个条目。 我需要在我的代码中进行哪些更改才能使其正常工作?

我有一种返回字母等级的方法,但该方法仅部分有效; 喜欢它显示适当的字母等级,但仅适用于最后一个条目。

package com.company;

import java.util.Scanner; //Summons the Scanner class

public class Main { //Main class

    //Instance variables to count and calculate the grades
    public static double total;
    public static int grade;
    public static int entries = 0;

    public static void main(String[] args) { //Main method

        //Creates a scanner for user input
        Scanner keyboard = new Scanner(System.in);
        int[]grades = new int[7];

        while (entries < 6) { //Make the user enter 6 grades
            do {
                System.out.printf("Enter grade %d: ", entries); //Prompt for a grade
                grades[entries] = grade;
                entries++;
                grade = keyboard.nextInt(); //Get the user input
                total = total + grade; //Add grade to total
            } while (!wrongValue(grade)); //Call a method to prompt for a re-entry upon user error
        }
        grades[6]=grade;
        double average = total / 6; //Get the total
        System.out.printf("1st grade is %d which is %s%n%%", grades[1], letterGrade(grade));
        System.out.printf("2nd grade is %d which is %s%n%%", grades[2], letterGrade(grade));
        System.out.printf("3rd grade is %d which is %s%n%%", grades[3], letterGrade(grade));
        System.out.printf("4th grade is %d which is %s%n%%", grades[4], letterGrade(grade));
        System.out.printf("5th grade is %d which is %s%n%%", grades[5], letterGrade(grade));
        System.out.printf("6th grade is %d which is %s%n%%", grades[6], letterGrade(grade));
        System.out.printf("total average = %.1f%%", average);
    }

    public static String letterGrade (int grade)
    {
        if (grade >= 90 && grade <= 100)
            return "an A+";
        else if (grade >= 80 && grade <= 90)
            return "an A";
        else if (grade >= 75 && grade <= 80)
            return "a B+";
        else if (grade >= 70 && grade <= 75)
            return "a B";
        else if (grade >= 65 && grade <= 70)
            return "a C+";
        else if (grade >= 60 && grade <= 65)
            return "a C";
        else if (grade >= 55 && grade <= 60)
            return "a D+";
        else if (grade >= 50 && grade <= 55)
            return "a D";
        else
            return "an F";
    }
}

我怀疑你想用你从用户那里读到的每个grade来调用letterGrade 但首先, arrays 从0 (不是1 )开始。 您的格式String (s) 有奇怪的%%文字,它将在下一行重新开始,我稍微清理了代码(我不喜欢无用的临时变量,我也不喜欢未能阐明代码的注释)。 喜欢,

public static void main(String[] args) {
    Scanner keyboard = new Scanner(System.in);
    int[] grades = new int[6];
    int total = 0;
    for (int i = 0; i < grades.length; i++) {
        do {
            System.out.printf("Enter grade %d: ", i + 1);
            grades[i] = keyboard.nextInt();
        } while (!wrongValue(grades[i])); 
        total += grades[i];
    }
    double average = total / 6.0;
    System.out.printf("1st grade is %d which is %s%n", grades[0], letterGrade(grades[0]));
    System.out.printf("2nd grade is %d which is %s%n", grades[1], letterGrade(grades[1]));
    System.out.printf("3rd grade is %d which is %s%n", grades[2], letterGrade(grades[2]));
    System.out.printf("4th grade is %d which is %s%n", grades[3], letterGrade(grades[3]));
    System.out.printf("5th grade is %d which is %s%n", grades[4], letterGrade(grades[4]));
    System.out.printf("6th grade is %d which is %s%n", grades[5], letterGrade(grades[5]));
    System.out.printf("total average = %.1f which is %s%n", average, 
            letterGrade((int) average));
}

最后,我根据您发布的逻辑假设,当值有效时, wrongValue实际上返回true (因此方法名称似乎是向后的)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM