2017-10-05 7 views
0

数値を入力すると、次のイメージのような表が印刷されます。 Expected output出力の長さに基づいて印刷されたテーブルの長さを調整する方法(コンソールで印刷する)

出力の長さに基づいて印刷する " - "の数を調整する方法はわかりません。 整数変数を使って文字数を増やし、同じ量の " - "を印刷すると、別の数学的計算を試みました。ここで

は私の出力である:ここでは Output

は私のコードです:

Scanner keyboard = new Scanner(System.in); 
    int num; 
    char line = 45; 
    StringBuilder sb = new StringBuilder(); 

    do { 
     System.out.println("Enter a number between 1 and 30"); 
     num = keyboard.nextInt(); 
     if (num == 0) System.exit(0); 
    } while (num < 1 || num > 30); 


    //TOP LINES --> THIS IS THE PROBLEM 
    for (int i = 0; i < num; i++) { 
     for (int j = 0; j < num/4; j++) { 
      sb.append(line); 
     } 
    } 
    System.out.println(sb); 

    //PRINTS FIRST PIPE 
    System.out.printf("|"); 


    for (int n = 1; n <= num*num; n++) { 
     System.out.printf(" %-3d|", n); 
     if (n % num == 0 && n != num*num){ 
      System.out.println(); 
      System.out.printf("|"); 
     } 
    } 

    //BOTTOM LINES 
    System.out.println("\n" + sb); 

答えて

0
は「-'s

//TOP LINES --> THIS IS THE PROBLEM 
for (int i = 0; i < num; i++) { 
    for (int j = 0; j < num/4; j++) { 
     sb.append(line); 
    } 
} 
System.out.println(sb); 


    >>>>>>> TO <<<<<<<< 

     //Determine the column size 
    String largestValue = "" + (num * num); // for 20, this is "400" 
    int strLen = largestValue.length(); // for 20, this is 3 + 1 space+ for right '|' 
    int width = (num * (strLen + 2)); 
    width++; // for right '|' 
    //TOP LINES 
    for (int i = 0; i < width; i++) { 
     System.out.print('_'); // I'm outputting an underscore 
    } 
    System.out.println(""); 
    System.out.print("|"); 
    for (int n = 1; n <= num; n++) { 
     System.out.printf(" %-" + strLen + "d|", n); 
    } 
    System.out.println(""); 
    for (int row = 1; row <= num; row++) { 
     System.out.print("|"); 
     for (int column = 1; column <= num; column++) { 
      System.out.printf(" %-" + strLen + "d|", (row * column)); 
     } 
     System.out.println(""); 
    } 
    //bottom LINES 
    for (int i = 0; i < width; i++) { 
     System.out.print('_'); 
    } 
    System.out.println(""); 
の数を計算するために、あなたのループを変更

関連する問題