【问题标题】:Print veritcal histogram without using arrays不使用数组打印垂直直方图
【发布时间】:2017-10-11 18:11:02
【问题描述】:

我必须编写一个应用程序,该应用程序将从用户那里获取 3 个数字并创建一个直方图。 F.g: 输入:2、4、3 输出:

 *
 **
***
***

这并不容易,因为我不能使用任何数组。我有一个想法找到最大的数字,然后创建循环

for(int i = max; i > 0; i--)

但我不知道在循环中放什么。

【问题讨论】:

  • 你能提供一个更具描述性的问题吗?
  • 您能否重新排序必须遵循用户输入的直方图。比如 2,4,3 重新排序为 4,3,2 这样就更容易打印了?
  • 不,我不能重新排序。

标签: java histogram


【解决方案1】:

解决它的一种方法是按照您的想法从最大值向下循环,然后继续检查每个数字以查看它是否应该打印

void print(int a, int b, int c)
{
    int max = Math.max(a, Math.max(b, c));
    for(int i = max; i > 0; i--)
    {
        System.out.print(a >= i ? "*" : " ");
        System.out.print(b >= i ? "*" : " ");
        System.out.print(c >= i ? "*" : " ");
        System.out.println();
    }
}

【讨论】:

  • @Mrfk 定义不能正常工作?它应该按照您的要求工作
  • 嗯,我的输入是:5、3、10。第一列有 6 个 *,第二列有 8,最后只有一个。
  • @user3437460 因为我指出你的几乎是我的完全相同的副本,是的,它会是相似的
  • @Mrfk 我在compilejava.net 上运行它并获得预期的打印输出
  • 嗯。你知道如何将它转换成 c++ 吗?
【解决方案2】:

就这么简单:

public static void histogram(int a, int b, int c){
    int size = Math.max(Math.max(a, b), c);
    for(int x=size; x>0; x--){
        System.out.print(x > a? " " : "*");
        System.out.print(x > b? " " : "*");
        System.out.println(x > c? " " : "*");
    }
}

首先,通过从 3 个整数中取最大值来确定直方图中的行数。 随后,打印列。如果没有达到给定的高度,打印一个空格,否则打印*

【讨论】:

  • 这是我的答案的精确副本,除了一个错误,每列将比应有的短 1
  • 我发布我的代码后才看到你的代码。它确实非常相似。如果我没有在 IDE 中编辑和测试我的代码,我会更早地发布它;)
猜你喜欢
  • 1970-01-01
  • 2014-12-08
  • 2016-02-03
  • 1970-01-01
  • 1970-01-01
  • 2021-03-17
  • 1970-01-01
  • 1970-01-01
  • 2013-06-27
相关资源
最近更新 更多