我想打印图表,但我已将其打印出来。为什么?

时间:2013-09-16 08:39:56

标签: java println

我的程序用数字填充整数数组,我称之为计数数组:

int[] array count = {5, 4, 3, 0};

现在我想使用for循环以水平方式打印我的数组。我想在asteriks中打印我的所有值,例如:

   *     
   *        *
   *        *        *
   *        *        *
   *        *        *
count(0) count(1) count(2) count(3)

首先,我想知道我的数组的最大值是什么。如果此最大值=匹配,则打印为asteriks否则为空格。但是我不能只循环,并且执行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

为什么会这样?什么是更好的方式来看待这个解决方案?

2 个答案:

答案 0 :(得分:1)

for (int k = 6; k >= 0; 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; 
                }
            }

试试这个。

答案 1 :(得分:1)

 maxInt = (maxInt - maxInt) + k;

(maxInt - maxInt)总是为零,所以这里出了点问题。

你可以使用value>=maxInt而不是==作为触发器使用maxInt,然后就像你说的那样循环

然后你只需要两个循环:外部一个迭代每一行,内部一个循环,如图:

//Given the max value of the graph maxInt
for (int i=maxInt;i>0;i--) {
    for (int j=0;j<count.length;j++) {
        if (count[j]>=i) {
            System.out.print(" * ");
        } else {
            System.out.print("   ");
        }
    }
    System.out.println("NEWLINE");
}

我认为这种方式更优雅(因为它更简单易懂。