2015-12-04 35 views
0

我工作的一個項目,我想顯示藥物劑量的表,我有串空間排列的問題,我嘗試修復它,如下所示:如何使字符串數組中的字符串等於通過添加空間的長度?

for (int drug = 0; drug < doses.length; drug++) 
    { 
    str+=opDrugs[drug]; 
    int x=getLongestString().length(); 
    int y=getShortestString().length(); 
    while (y<x) 
    {str+=" "; 
     y++;} 

我想第一列等於長度,但輸出仍然爲以下幾點:

    Time1 Time2 Time3 Total 
    O2     99  96  70  265.0 
    N2O     68  87  90  245.0 
    gas     94  100  90  284.0 
    musle relaxent     100  81  82  263.0 
    narcotic     83  65  85  233.0 
    fluid     78  87  65  230.0 
    atropine     85  75  83  243.0 
    neostagmine     91  94  100  285.0 
+6

你會在錯誤的方式。你想要格式化你的輸入。看看'System.out.printf'和'Formatter'。 – Tunaki

+0

使用'printf'時,我喜歡使用[作弊表](https://www.cs.colostate.edu/~cs160/.Fall15/resources/Java_printf_method_quick_reference.pdf)。 – gonzo

+0

@Tunaki我不想使用System.out.printf,有沒有一種方法來格式化單個字符串,因爲我們在printf中使用? –

回答

0

最快的不是很信得過的方法:使用\t表示製表符。

可信任的方法:使用System.out.printf()

public static void main(){ 
String str1 
int i1,i2; 
float num4; 

str1= "O2"; 
i1=99; 
i2=96;  
num4=265.0; 
System.out.printf("%10s\t%2d\t%2d\t%.2f\n",str1,i1,i2,num4); 
} 

正如你可以看到你可以讓所有的字符串使用相同的空間,並與%.2f您可以控制多少小數表示。 \n在輸出中創建一個新行。

如果你只是想串但不打印,您可以使用

String result = String.format("%10s\t%2d\t%2d\t%.2f\n",str1,i1,i2,num4); 

爲避免你應該prefereably calculathe在另一種方法中最長的一個,把它作爲參數字符串錯誤。

int longest=findLongestString(String[] opDrugs); 
for (int drug = 0; drug < doses.length; drug++) 
{ 
String result = String.format("%"+longest+"s\t%2d\t%2d\t%.2f\n",opDrugs[drug],i1,i2,num4); 
0

你可以嘗試沿着這些路線的東西:

  1. 工作出了第一列的最大尺寸。假設你的函數getLongestString()。length();這樣做的代碼是:

str + = opdrugs [drug];

int column1_width = getLongestString()。length();

  • 假設要至少一個空間,添加一個到
  • columnn1_width + = 1;

  • 打印取決於當前字符串長度的空格數:
  • int num_spaces = column1_width - opDrugs[drug].length; for (int space_num = 0;space_num < num_spaces; space_num++) { str += " "; }

    相關問題