如何通过添加空格使字符串数组中的String等于长度?

时间:2015-12-04 21:36:35

标签: java

我正在研究一个项目,我想显示药物剂量表,我有字符串空间对齐的问题,我尝试修复它如下:

   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

2 个答案:

答案 0 :(得分: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);

为了避免字符串出错,您应该优先计算另一种方法中最长的字符串并将其作为参数发送。

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);

答案 1 :(得分:0)

你可以尝试这些方法:

  1. 计算出第一列的最大大小。假设你的函数getLongestString()。length();这样做,代码将是:
  2. str + = opDrugs [drug];

    int column1_width = getLongestString()。length();

    1. 假设您至少需要一个空格,请添加一个空格
    2. columnn1_width + = 1;

      1. 根据当前字符串长度打印空格数:
      2. int num_spaces = column1_width - opDrugs[drug].length; for ( int space_num = 0;space_num < num_spaces; space_num++ ) { str += " "; }