我正在研究一个项目,我想显示药物剂量表,我有字符串空间对齐的问题,我尝试修复它如下:
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
答案 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)
你可以尝试这些方法:
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 += " ";
}