我需要通过方法barChartPrinter
的调用打印出条形图。即将打印barChartPrinter(5, 6, 2);
:一个5 XX的垂直列,然后是
一个空格,然后是一个6 XX的垂直列和一个2 XX的垂直列。
这些数字是基于用户输入的,所以我想我需要收集数字并将它们存储在一个数组中。而我正在考虑涉及for循环, 但我不确定我该怎么做。
public class BarChart {
public static void main(String args[]) {
int[] list = new int[4];
Scanner input = new Scanner(System.in);
System.out.println("Enter four integers: ");
for(int i = 0; i < list.length; i++)
list[i] = input.nextInt();
System.out.println();
barChartPrinter(list);
}
public static void barChartPrinter(int[] numbers) {
int max = numbers[0];
for (int i = 0; i < numbers.length; i++)
if(numbers[i] > max)
max = numbers[i];
}
}
这就是我遇到的问题:定义打印出条形图的方法;给定用户输入值。该方法需要以这种格式打印出来,即
barChartPrinter(1, 2, 3, 4) =
出于某种原因,它不会显示如何在这里构建条形图,所以我只是描述它:
首先是一列XX,然后是XX列(其中两列垂直代表2),然后是另一列XX(但这次其中三列在彼此之上,代表3号)最后是XX * 4的另一列垂直。
任何指针?
答案 0 :(得分:1)
好的,到目前为止我确信您知道创建水平条形图非常容易:
2 6 4
**
******
****
由于控制台PrintStream的print和println方法(out
的{{1}})水平打印。您的作业的技巧是如何打印此图垂直。为此,你将不得不使用一点逻辑。由于这显然是家庭作业,我不会给你一个解决方案,而是建议选项。
System.out
,以帮助告诉while循环何时保持循环以及何时停止。keepGoing
。"* "
(您可以致电"* "
),则myString.trim().isEmpty()
和while循环应停止。编辑:您发布的代码有点偏离,因为它告诉用户输入四个数字,但只接受三个。你想解决这个问题。
编辑2 您声明:
嘿,对不起,是的,我把代码排序了。我编写了在方法中找到最大值的方法。我现在停留在实际制作图表的步骤上。我知道它会在每行水平打印XX,但我仍然难以理解如何实现这一点 - 我知道它将涉及一个for循环,但我看不出如何打印每列的XX ;如果我遗漏了一些明显的东西,请道歉
再一次,通过将大问题分成小步骤来解决您的问题,这是您能想到的最小问题,然后解决每个小步骤。你知道你将不得不构造一个要打印的String,所以你应该关注它,关于如何构造这个String,以便在需要的地方存在星号,并且当列应该存在空格时显示没有星号。尝试提出一个解决方案,甚至是部分解决方案,并将其作为您的问题的编辑发布,就像我将此编辑发布到我的答案中一样。