我最近开始学习JAVA。我目前正在做一些有关stdout和格式化的日常练习。
锻炼:
每行输出必须有2列 第一列:字符串左对齐为15个字符 第二列:用三位数字表示的整数
我终于想出了办法,并提出了:
System.out.format("%-15s %03d %n",s1 , x );
但是当我运行程序时,出现了一个错误。
后来我删除了说明符之间的空格,即
System.out.format("%-15s%03d%n",s1 , x );
代码似乎有效。
只想知道不添加空间时有什么区别。
答案 0 :(得分:0)
在格式字符串中添加的空格将为文字空格。这意味着您将从提供的字符串加的开头开始获得15个空格,因此一个空格总共为16。这同样适用于添加到输出的数值。 %03d 之后的空格将在数值后添加一个额外的空格。知道了这一点,您可以将其应用于示例:
String s1 = "My Name";
int x = 61;
System.out.format("%-15s %03d %n", s1, x ); // Spaces in format.
System.out.format("%-15s%03d%n", s1, x ); // No Spaces in format.
输出将是:
My Name 061
My Name 061
位置:
My Name 061
^^^^^^^^^^^^^^^^^^^^
| 16 ||4 |
My Name 061
^^^^^^^^^^^^^^^^^^
| 15 ||3|
这种格式(两种方式)不会会产生错误。如果 format()方法提供的任何一个或两个变量的数据类型错误,将产生错误。变量 s1 是否声明为字符串,变量 x 是否声明为十进制整数( int )?如果不是,那么您可能会遇到 IllegalFormatConversionException 。 See Here以获得与 format()方法一起使用的正确转换器标记。