java我想打印一张图表,但我把它打印颠倒了。为什么?
我的程序用数字填充整数数组,我称之为计数数组:
int[] array count = {5, 4, 3, 0};
现在我想使用for循环以图形方式水平打印数组。我想用asteriks打印我的所有值,例如:
*
* *
* * *
* * *
* * *
count(0) count(1) count(2) count(3)
首先,我想知道数组的最大值是多少。如果此最大值=匹配,则我打印为星号,否则为空格。但是我不能循环,执行maxint-1,检查是否有匹配项,因为这样我只会得到每个数组最大值的星号,以及剩余空间
所以我试着做一个变通,从每个最小值开始,向上做起
for (int k = 0; k <= 6; k++) {
System.out.println("NEXTLINE");
maxInt = (maxInt - maxInt) + k;
for (int i = 0; i < controleArray.length; i++ ) {
int graphLetter = letterCount[i];
for (int j = 0; j < 25; j++) {
//System.out.println("TESTinner ");
if (graphLetter > maxInt) {
System.out.print(" * ");
break;
} if (graphLetter <= maxInt) {
System.out.print(" ");
break;
}
}
到目前为止,这段代码正在计算数组的每个值并打印星号。然而,它们的印刷方式是颠倒的。因此,输出将如下所示
* * * NEXTLINE
* * * NEXTLINE
* * * NEXTLINE
* * NEXTLINE
* NEXTLINE
为什么会发生这种情况?还有什么更好的方法来看待这个解决方案
# 1 楼答案
试试这个
# 2 楼答案
(maxInt-maxInt)始终为零,因此这里出现了一些问题
您可以使用maxInt作为触发器,使用
value>=maxInt
代替==
,然后您可以像您所说的那样,只循环那么您只需要两个循环:外部循环对每一行进行迭代,内部循环对图形的每一条进行迭代,类似于:
我认为这种方式更优雅(因为它更简单,更容易理解)