2013-10-16 39 views
0

我想複製從千克到磅的轉換列表,反之亦然。我已經找到了我想要的輸出和功能代碼,但我缺少一些東西來將我的值與列的右側對齊。對齊循環中的數字列

這裏是我的代碼:

import java.text.*; 

public class KilosTwoColumn { 
    public static void main(String[] args) { 
     System.out.println("Kilograms" + "\t" + "Pounds" + "\t" + " | " + "\t" + "Pounds" + "\t" + "Kilograms"); 

     int count = 0; 

     while (count < 100) { 
      int kilos = count * 2 + 1; 
      int pounds2 = (count + 4) * 5; 
      double pounds = kilos * 2.2; 
      double kilos2 = pounds2 * .453; 
      DecimalFormat df = new DecimalFormat("#.#"); 

      //if (count > 1 && count < 98) { 
       //System.out.println("..."); 
       //break; 
      //} 

      System.out.printf("%-17d %.1f | %7d  %.2f%n", kilos, pounds, pounds2, kilos2); 
      count++; 
     } 
    } 
} 

我也想創建列表中的三行休息和恢復的最後兩個。

+2

我不知道如果我得到您的要求:你有你需要的一切已經在printf函數正確對齊。你錯過了什麼? – TwoThe

回答

0

的問題是,你不指定寬度爲浮點值,小數點後的僅僅數.....

例如,考慮"%-17d %.1f ..."將設置第二個值是一個浮點值有1個小數位,但沒有指示佔用多少空間。通過將其更改爲"%-17d %12.1f它將佔用12個字符,並保留一位小數。

試着這麼做:

public class KilosTwoColumn { 
    public static void main(String[] args) { 

     System.out.printf("%12s %12s | %7s %12s\n", "Kilograms", "Pounds", "Pounds", "Kilograms"); 

     int count = 0; 

     while (count < 100) { 
      int kilos = count * 2 + 1; 
      int pounds2 = (count + 4) * 5; 
      double pounds = kilos * 2.2; 
      double kilos2 = pounds2 * .453; 
      DecimalFormat df = new DecimalFormat("#.#"); 

      //if (count > 1 && count < 98) { 
       //System.out.println("..."); 
       //break; 
      //} 

      System.out.printf("%12d %12.1f | %7d %12.1f\n", kilos, pounds, pounds2, kilos2); 
      count++; 
     } 
    } 
} 

對於我來說,上面的過程輸出:

Kilograms  Pounds | Pounds  Kilograms 
     1   2.2 |  20   9.1 
     3   6.6 |  25   11.3 
.... 
     199   437.8 |  515   233.3