0

所以我有一个方法可以调用到我的 main 中,它接受一个包含 10 个数字的数组,并在嵌套的 for 循环中创建一个直方图输出。我不知道如何在行标题旁边获得正确数量的星号。数组从前一个方法传递给该方法。谢谢!!

public static void outputHistogram(int [] list)
{

    int k =0;
    for(int i=0;i<=9;++i)
    {
        System.out.print((i*10+1) +"-"+(i*10+10)+":"+"\t");

        for(int j=1; j<=i;++j)  
            System.out.print("*");


        System.out.println();   
    }
}
4

5 回答 5

3

如果您打算将“列表”变量(实际上是一个int数组)用于直方图,那么我对双for循环的建议如下:

外循环(从 0 循环到列表末尾)

for (int i = 0; i < list.length; i++)

内循环(从 0 循环到外循环的第 i 个元素)

for (int j = 0; j < list[i]; j++)
于 2013-03-14T08:10:48.430 回答
1

您甚至不会在 outputHistorgram 方法中的任何地方使用您的列表。我不确切知道这应该产生,但也许像这样进行for循环可能会有所帮助:

for(int i : list)

如果这不正确,请给出示例输入和输出。

于 2013-03-14T08:08:37.860 回答
1

您在第二个 for 循环中的测试需要是j < list[i]

于 2013-03-14T08:11:36.887 回答
0

我想你想这样做。

public static void outputHistogram(int [] list)

{

int k =0;
for(int i=0;i<=9;++i)
{
    System.out.print((i*10+1) +"-"+(i*10+10)+":"+"\t");

    for(int j=1; j<=(i*10+10);++j)  
        System.out.print("*");


    System.out.println();   
}

}

于 2013-03-14T08:16:52.890 回答
0
import java.util.Scanner;
class Histogram
{
  private int count[]=new int[10];  // count array will keep elements of element
                                  // in particular range;
  public void showHistogram(int elements[])       // for example   27 15 34 22 11 11 19
  {                                 // in above input there is count[0]=0;
    for(int i=0;i<elements.length;i++)   // count[1]=4 and count[2]=2 and count[3]=1;
    {
     if(elements[i]>=0 && elements[i]<50)
     {
       if(elements[i]<10)
       {
          count[0]++;
       }
       else if(elements[i]>=10 && elements[i]<20)
       {
           count[1]++;
       }
       else if(elements[i]>=20 && elements[i]<30)
       {
           count[2]++;
       }
       else if(elements[i]>=30 && elements[i]<40)
       {
           count[3]++;
       }
       else
       {
          count[4]++;
       }
     }
     else if(elements[i]>=50 &&elements[i]<=100)
     {
       if(elements[i]<60)
       {
          count[5]++;
       }
       else if(elements[i]>=60 && elements[i]<70)
       {
           count[6]++;
       }
       else if(elements[i]>=70 && elements[i]<80)
       {
           count[7]++;
       }
       else if(elements[i]>=80 && elements[i]<90)
       {
           count[8]++;
       }
       else
       {
           count[9]++;
       }
     }
   }
   showHistogram1();
}
  private void showHistogram1()
  {
    System.out.println("Histogram of the elements:");
    for(int i=0;i<count.length;i++)     // this loop will print line
    {
       for(int j=0;j<count[i];j++)      // this will print elements element(*)
       {                                // at each line.
           System.out.print("* ");
       }
       if(count[i]!=0)                  // if line does'nt contain zero   
       System.out.println("");          // then if will change the row;
    }
  }
}
/*
  in above code if count[i]=zero means if there is elements
  element in particular range say [0-9] then it will
  elementst jump on next line;
*/
class HistogramGenerator   //Question3
{
public static void main(String args[])
{
     Histogram hg=new Histogram();
     System.out.println("Enter the elements of Elements want in a Histogram:");
     Scanner sc=new Scanner(System.in);

     int noOfElements=sc.nextInt();
     int histogramElements[]=new int[noOfElements];

     System.out.println("Enter the Elements for Histogram:");
     for(int i=0;i<noOfElements;i++)
     {
         histogramElements[i]=sc.nextInt();
     }

     hg.showHistogram(histogramElements);
 }
 }
于 2013-10-25T06:32:15.773 回答