成绩分配代码需要帮助编辑

时间:2016-07-20 18:22:38

标签: java

我的代码没有提供我想要的输出。

代码

import java.util.Scanner;
public class GradeDistribution 
{
    private static int a, b, c, d, f;
    public static void main(String[] args) 
    {
        Scanner keyboard = new Scanner(System.in);
        System.out.println("        Get Grade Counts");
        System.out.print("\nEnter number of letter grade A: ");
        a = keyboard.nextInt();
        System.out.print("Enter number of letter grade B: ");
        b = keyboard.nextInt();
        System.out.print("Enter number of letter grade C: ");
        c = keyboard.nextInt();
        System.out.print("Enter number of letter grade D: ");
        d = keyboard.nextInt();
        System.out.print("Enter number of letter grade F: ");
        f = keyboard.nextInt();

        System.out.println();
        System.out.println("0   10   20   30   40   50   60   70   80   90   100%");
        System.out.println("|    |    |    |    |    |    |    |    |    |    |");
        System.out.println("**************************************************");
        int totalGrades = a+b+c+d+f;
        int Acent = (a*100/totalGrades);
        int Bcent = (b*100/totalGrades);
        int Ccent = (c*100/totalGrades);
        int Dcent = (d*100/totalGrades);
        int Fcent = (f*100/totalGrades);
        while(((Acent)/2)-1>0)
        {
            System.out.print("*");
            Acent--;
        }
        System.out.print(" A");
        System.out.println();
        while(((Bcent)/2)-1>0)
        {
            System.out.print("*");
            Bcent--;
        }
        System.out.print(" B");
        System.out.println();
        while(((Ccent)/2)-1>0)
        {
            System.out.print("*");
            Ccent--;
        }
        System.out.print(" C");

        System.out.println();
        while(((Dcent)/2)-1>0)
        {
            System.out.print("*");
            Dcent--;
        }
        System.out.print(" D");
        System.out.println();
        while(((Fcent)/2)-1>0)
        {
            System.out.print("*");
            Fcent--;
        }
        System.out.print(" F");
    }

}

输出:

        Get Grade Counts

Enter number of letter grade A: 1
Enter number of letter grade B: 4
Enter number of letter grade C: 6
Enter number of letter grade D: 2
Enter number of letter grade F: 1

0   10   20   30   40   50   60   70   80   90   100%
|    |    |    |    |    |    |    |    |    |    |
**************************************************
**** A
************************* B
*************************************** C
*********** D
**** F

所需输出

        Get Grade Counts

Enter number of letter grade A: 1
Enter number of letter grade B: 4
Enter number of letter grade C: 6
Enter number of letter grade D: 2
Enter number of letter grade F: 1

0   10   20   30   40   50   60   70   80   90   100%
|    |    |    |    |    |    |    |    |    |    |
**************************************************
**** A
*************** B
********************** C
******* D
**** F

2 个答案:

答案 0 :(得分:0)

输出似乎没问题。这是我在eclipse sdk上运行它时得到的结果:

    Get Grade Counts

Enter number of letter grade A: 6
Enter number of letter grade B: 4
Enter number of letter grade C: 7
Enter number of letter grade D: 2
Enter number of letter grade F: 1

0   10   20   30   40   50   60   70   80   90   100%
|    |    |    |    |    |    |    |    |    |    |
**************************************************
*************************** A
***************** B
******************************** C
******* D
** F

如果尚未解决,请进一步描述您的问题。 虽然,我认为你使用的字体可能是问题。尝试不同的字体,看看会发生什么。

答案 1 :(得分:0)

看起来您遇到的问题在于您使用的逻辑打印出每个字母的*数。如果你通过你的逻辑说C,你会期望它打印大约21 *以与C代表总量的大约42%一致。但是,您的逻辑导致while循环运行太多次。 (Ccent / 2)-1即使你在循环的每次迭代中递减Ccent仍然是重复数字而不是每次减少一次。

执行此逻辑的更好方法是在for循环

中执行此操作
public String[] bestMatches (String[] s, int levenshteinDistanceMax){


}

这是你的Acent的例子,我会让你练习并设置其他的。这是一个更好的方法,因为你迭代到一个固定的数字(Acent / 2),并设置为每次传递增加一。由于四舍五入,我相信这会输出A和F的***,因此您可能需要修改输出或调整标记,以便在百分比介于两个偶数之间时帮助显示。希望这会有所帮助。