2017-02-24 56 views
-2

嘿每一個我只需要格式化一些代碼的一些幫助,我應該做一個表,但我似乎無法得到正確的對齊。到目前爲止,這是我已經得到的代碼:對齊文本沒有標籤 - java

public class assignment2 { 
    public static void main(String[] args) { 
    int line = 0; 
    int down = 0; 
    int num =0; 


    for (line = 1; line < 21; line++){ 
     System.out.print("  " + line); //prints the numbers across with 5 spaces 

    } 
     System.out.print("\n"); //moves the compiler to a new line, same thing as System.out.println 


    for (down = 1; down <= 20; down++) { //prints out the numbers down with 4 spaces to the first number 
     System.out.print(down + " "); 
     for (int i = 1; i <= 20; i++){ //Counter to stand in place for the x-axis numbers 
      num = i % down; 
      if (num != 0) { 
       System.out.print(" "); // 5 spaces, checks to see if the number are multiples of each other 
       if (i > 9){ 
        System.out.print(" "); //1 spaces, also aligns the numbers going diagonally 
       } 
       } else { 
       if (i >= 10){ 
        if (i % 2 == 0) { 

         System.out.print("E"+"  "); // 6 spaces 
        } else 
         System.out.print("O"+ "  "); // 6 spaces 

       } else { 
        if (i % 2 == 0) { 
         System.out.print("E"+"  "); // 5 spaces 
        } else { 
         System.out.print("O"+ "  "); // 5 spaces 

        } 
       } 
      } 
      if (down >=2){ 
       System.out.print(" "); // 1 space 
      } 
      if (i == 20){ 
       System.out.print("\r\n"); 
      } 
     } 

    } 
} 

到目前爲止文字是這樣的:Screen shot of display with code playing. 任何幫助,將不勝感激,它可以在指向正確的方向,並指出我有任何錯誤在代碼中完成它將非常感謝!

+0

你可能想看看的System.out.format()和System.out.printf()方法。 – Ali

回答

0

最簡單的方法是不使用空格。只需使用Tab標籤(\ t),像這樣:當你想申請

System.out.print("\t" + line); //for your top line 

現在要麼éØ你可以這樣做:

System.out.print("\tE"); 

OR

System.out.print("\tO"); 

但是,如果出於某種未知原因,您不允許使用Tab標籤(\ t),那麼您可以利用的String.format()方法替代選項卡標籤,就像這樣:

System.out.print(String.format("%"+spaces+"s", "E")); 

其中空間變量將持有的空格數要離開墊文本。你的任務的可能再現可能看起來像這樣:

int line, down, num, spaces; 
for (line = 1; line <= 25; line++){ 
    System.out.print(String.format("%6s", line)); 
} 
System.out.print("\n"); 
for (down = 1; down <= 25; down++) { 
    System.out.print(down); 
    for (int i = 1; i <= 25; i++){ 
     num = i % down; 
     if (down > 0 && down < 10 && i == 1) { spaces = 5; } 
     else if (down > 9 && i == 1) { spaces = 4; } 
     else { spaces = 6; } 
     if (num != 0) { 
      System.out.print(String.format("%"+spaces+"s", " ")); 
     } 
     else { 
      if (i % 2 == 0) { 
       System.out.print(String.format("%"+spaces+"s", "E")); 
      } 
      else { 
       System.out.print(String.format("%"+spaces+"s", "O")); 
      } 
     } 
    } 
    System.out.println(""); 
} 

可是......然後再......你可能不允許使用的String.format()方法之一:/

+0

問題是我不允許使用標籤功能,所以我必須弄清楚如何處理空格 – Oscarpon96

+0

@ Oscarpon96 - 請參閱我的文章中的編輯。 – DevilsHnd

0

我剛剛創建了你的程序。調整我不得不做的文字。爲「O」和「E」和「O」都做類似的事情。

System.out.print("E"); 
System.out.print("  "); 
if(ii >= 10) 
{ 
    System.out.print(" "); 
} 

我用一個嵌套的循環與一堆的if else語句來完成程序:

例子:

for(int i = 0; i <= numberEntered; i++) 
{ 
    for(int ii = 0; ii <= numberEntered; ii++) 
    { 
     //A bunch of code here 
    } 
    System.out.print("\n"); 
} 
+0

你能解釋一點嗎?我不明白你的意思。 – Oscarpon96