如何打印与变量值对应的设定数量的字符?

时间:2013-12-01 17:08:52

标签: java loops counting

我正在尝试建立一个系统,其中有人输入0到100之间的数字,然后程序会将数字分配到设定的边界,基本上是一个等级存储系统。 我会告诉你我的代码,然后详细说明。

public static void main(String[] args) {
//Boundary0/30/40/70 indicates which band the counter is for. e.g. 0-29, 30-39 etc
int Boundary0 = 0;
int Boundary30 = 0;
int Boundary40 = 0;
int Boundary70 = 0;
int Grade;
int count;
count = 0;
Scanner in = new Scanner(System.in);
//Read in first number
System.out.print("Enter an Integer");
 Grade = in.nextInt();



 while (Grade < 100){    
   //To count number of students
   count++;
   //To allocate each grade to corresponding tier
   if(Grade >= 0 && Grade <= 29){
          Boundary0++;
   }
   if(Grade >= 30 && Grade <= 39){
          Boundary30++;
   }
   if(Grade >= 40 && Grade <= 69){
          Boundary40++;
   }
   if(Grade >= 70 && Grade <= 100){
          Boundary70++;
   }
   Grade = in.nextInt();      
 }

 //To print each boundary seperately with the number of marks in each tier and overall total

    System.out.println("0-29:" + " " + Boundary0 );       
    System.out.println("30-39:" + " " + Boundary30);               
    System.out.println("40-69:" + " "+ Boundary40);        
    System.out.println("70-100:" + " " +Boundary70);        
    System.out.println("Amount of Students: " + count);
}
}

当用户输入一个数字时,程序会将1添加到相应的边界变量

然后当用户输入大于100的数字时,程序停止并打印

层和每层之后,告诉用户每层中有多少值。

那么我正在尝试做的是,在代码的末尾,sout命令所在的位置,

而不是字面上说每个部分有多少数字,我想代表

带* s的值,例如

0-29: *****
30-39: ****
40-69: ********
70-100: *****

对不起,如果我不是很清楚,我认为这可能只是对自己缺乏了解......

由于

3 个答案:

答案 0 :(得分:4)

创建一个可重复使用的方法,为您打印* -

public static void printStars(int n){
   for(int i = 0 ; i < n ; i++)
     System.out.print("*");
}

并像这样称呼它 -

System.out.println("0-29:" + " " + printStars(Boundary0));
System.out.println("30-39:" + " " + printStars(Boundary30));               
System.out.println("40-69:" + " "+ printStars(Boundary40));        
System.out.println("70-100:" + " " +printStars(Boundary70));

答案 1 :(得分:0)

只需添加额外的for-cycles:

System.out.print("0-29: ");
for(int i = 0; i < Boundary0; i++){
    System.out.print("*");
}
System.out.println("");

答案 2 :(得分:0)

我认为你已经用你的代码实现了你想要的东西。 你只需打印那些:

在代码的最后,添加以下内容:

System.out.print("0-29: ");
for(int i=0;i<Boundary0;i++)
{
 System.out.print("*");
}
System.out.println("");

System.out.print("30-39: ");
for(int i=0;i<Boundary30;i++)
{
 System.out.print("*");
}
System.out.println("");

System.out.print("40-69: ");
for(int i=0;i<Boundary40;i++)
{
 System.out.print("*");
}
System.out.println("");

System.out.print("70-100: ");
for(int i=0;i<Boundary70;i++)
{
 System.out.print("*");
}
System.out.println("");

这肯定会解决目的,并与您编写的代码保持同步。

但我的个人建议是使用HashMap<String,Integer>;来实现它。

希望这有帮助

EDIT !!!

这似乎很罗嗦。在Mohd的答案中尝试使用可重复使用的功能打印'*'。阿迪尔。