在说明符之间使用空格

时间:2018-11-26 20:56:47

标签: java

我最近开始学习JAVA。我目前正在做一些有关stdout和格式化的日常练习。

锻炼:

  

每行输出必须有2列   第一列:字符串左对齐为15个字符   第二列:用三位数字表示的整数

我终于想出了办法,并提出了:

System.out.format("%-15s %03d %n",s1 , x );

但是当我运行程序时,出现了一个错误。

后来我删除了说明符之间的空格,即

System.out.format("%-15s%03d%n",s1 , x );

代码似乎有效。

只想知道不添加空间时有什么区别。

1 个答案:

答案 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()方法一起使用的正确转换器标记。