Я хотел бы напечатать график, но я напечатал его вверх ногами. Почему?
Моя программа заполнила целочисленный массив числами, я назвал его count array:
int[] array count = {5, 4, 3, 0};
Теперь я хочу напечатать мой массив графически горизонтально, используя for loop(s). Я хочу напечатать все мои значения в 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 ответа:
maxInt = (maxInt - maxInt) + k;
(maxInt-maxInt) всегда равно нулю, поэтому здесь что-то не так.
Вы можете использовать maxInt просто как триггер, используя
value>=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"); }
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; } }
Попробуйте Это.