2016-12-09 8 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

配列を持たない垂直ヒストグラムを表示することが可能です。私にコードを表示することができれば –

関連する問題