2016-12-09 2 views
0

Мне нужна помощь для отображения моих звезд по вертикали. Но я не знаю, как это сделать. Мне удалось показать звезду, но она не была опрятной. Если у вас есть другие способы сделать это, пожалуйста, отобразите свой ответ.Показать вертикальную гистограмму java

Это моя переменная:

int Count = 0; //total number of marks entered 
    int catOne = 0; //counters for each catergory 
    int cat2 = 0; //counters for each catergory 
    int cat3 = 0; //counters for each catergory 
    int cat4 = 0; //counters for each catergory 
    int mark = 0; 
    int totalPassed = 0; //entered by user 
    double averageScore = 0; 
    int lowMark = 102; 
    int highMark = 0; 
    int mark1 = 0; 
    int value = 0; 
    boolean run = false; 

Это мой код для вертикальных звезд:

//Vertical 
    System.out.println("0-29 30-39 40-69 70-100"); 
    for (int i = 0; i < catOne; i++) { 
     System.out.println(" "); 
     System.out.print(""); 
     System.out.print("*  ");//display the amount of students recieved the mark 


    } 
    System.out.print(""); 
    for (int i = 0; i < cat2; i++) { 
     System.out.println(" "); 
     System.out.print(""); 
     System.out.print("  *"); //display the amount of students recieved the mark 

    } 
    System.out.print(""); 
    for (int i = 0; i < cat3; i++) { 
     System.out.println(" "); 
     System.out.print(""); 
     System.out.print("    *");//display the amount of students recieved the mark 
    } 

    for (int i = 0; i < cat4; i++){ 
     System.out.println(" "); 
     System.out.print(""); 
     System.out.print("      *"); //display the amount of students recieved the mark 
     System.out.print(""); 
    } 

Вывод этого кода заключается в следующем:

0-29 30-39 40-69 70-100 

*   
* 
*   
     * 
       * 
         * 
         * 
         * 
+0

чек из http://docs.oracle.com/javase/8/docs/api/java/io/PrintWriter.html#format-java.lang.String-java.lang .Object ...- – davedwards

ответ

0

Используйте массив вместо отдельных переменных для циклов. Это делает его намного проще. Поскольку количество звезд может варьироваться в каждой категории, проверьте максимальное количество звезд, что означает границу для внешнего контура для печати строк. Внутренний цикл создает каждую строку, итерируя массив categories. Вот код:

int[] categories = new int[4]; 

// ...set the values for the categories directly... 
// ...or copy them like this: 
// categories[0] = catOne; 
// categories[1] = cat2; 
// categories[2] = cat3; 
// categories[3] = cat4; 

int maximum = 0; 
for (int value : categories) { 
    if(value > maximum) { 
     maximum = value; 
    } 
} 

// The above loop is the short version of: 
// for (int i = 0; i < categories.length; i++) { 
//  if (categories[i] > maximum) { 
//   maximum = categories[i]; 
//  } 
// } 

// Added "00", so the colums have equal width 
System.out.println("00-29 30-39 40-69 70-100\n"); 

for (int i = 0; i < maximum; i++) { 
    for (int j = 0; j < 4; j++) { 
     if (categories[j] > i) { 
      System.out.print("*  "); 
     } else { 
      System.out.print("  "); 
     } 
    } 
    System.out.println(); 
} 
+0

Многие благодарны за ваш ответ. Мое приложение для пользователя отображает значения, я не могу предоставить значения. кроме того, есть ошибка с этим для (int value: categories) {- * он говорит, что значение переменной уже определено в строке метода –

+0

Я проверил код, ошибки не возникли, а результат - то, что вы хотели. Что вы подразумеваете под «Я не могу давать ценности»? – thatguy

+0

можно отображать вертикальную гистограмму без массива, если вы можете показать мне код –

Смежные вопросы