【问题标题】:how do I generate histogram output from an array in Java?如何从 Java 中的数组生成直方图输出?
【发布时间】:2013-03-14 08:03:43
【问题描述】:

所以我有一个方法可以调用到我的 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();   
    }
}

【问题讨论】:

  • 你为什么不使用列表输入?您希望输出看起来如何?
  • int k=0;什么都不做……你甚至需要它吗?
  • 不,我不需要它。删除!谢谢!
  • Java Histogram using asterisks 的可能重复项

标签: java arrays methods histogram


【解决方案1】:

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

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

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

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

for (int j = 0; j < list[i]; j++)

【讨论】:

  • 哦,我爱你。效果很好!!我花了这么多小时试图弄清楚这一点,我觉得很傻!谢谢谢谢R.J!
  • 不要忘记接受符合您目的的答案。当您的问题得到解决时,请始终接受答案。:)
【解决方案2】:

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

for(int i : list)

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

【讨论】:

  • 好的,所以输入是来自先前方法的十个整数数组,例如 {0,3,2,4,5,1,0,2,1,0} 和输出应该看起来像:1-10: 11-20: *** 21-30: ** 等等。
【解决方案3】:

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

【讨论】:

  • 谢谢克里斯!就是这样!花了我足够长的时间!哎呀!
  • @MaryK 新用户建议:不要忘记对有帮助的答案进行投票,并接受最能满足您需求的答案。 :)
【解决方案4】:

我想你想这样做。

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();   
}

}

【讨论】:

    【解决方案5】:
    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);
     }
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-14
      • 2014-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多