2016-07-20 44 views
-1

我的代码不提供输出,我想。等级分布代码需要帮助的编辑工作

代码

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

请澄清你的问题。 – Farini

+0

我已经去编辑布局到我认为你的意图。然而,它仍然很难理解你不满意哪一部分代码,是每个字母之前显示的星星数量?请你可以添加一些更具体的描述问题的细节 - 那么你会得到更好的答案。 –

回答

0

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

一个更好的方法,这样做的逻辑是做一个for循环

//this loop says that for int i, exicute the block of code 
    //and then increment i once for each pass through the loop 
    //and do this for as long as i is <= Acent/2 
    for(int i = 1;i<=Acent/2;i++){ 

      System.out.print("*"); 
     } 
     System.out.println(" A");// this formats the letter at end of * 

这是您的Acent的例子中,我将离开你练习,并通过建立其他的工作。这是一个好得多的方法,因为你迭代到一个固定的数字(Acent/2),并且每次传递时都设置为1。由于四舍五入,我相信这会为A和F输出***,所以当百分比介于两个偶数之间时,您可能需要修改此输出或调整标记以帮助显示。希望这可以帮助。

+0

谢谢!我发现我需要将“除以2”从循环中移入Acent。 –

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 

进一步详细说明您的问题,如果没有解决。 虽然,我认为你使用的字体可能是问题。尝试不同的字体,看看会发生什么。