我的代码没有提供我想要的输出。
代码
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
答案 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的***,因此您可能需要修改输出或调整标记,以便在百分比介于两个偶数之间时帮助显示。希望这会有所帮助。