【发布时间】:2016-08-31 10:59:46
【问题描述】:
我是 Java 编程新手,/t 转义序列让我感到困惑。我试着写乘法表的代码:
for(int i = 1; i<=10; i++){
for(int j = 1; j<=5; j++){
System.out.println(j + "*" + i + "=" + j*i + "\t");
}
System.out.println();
}
为什么输出是这样的:
我的意思是,为什么选项卡在每种情况下都不是“相同大小”,即 1x1=1 与 1x2=2 相差甚远,但 10x1=10 和 10x2=20 更接近。 另外,当我尝试在代码中做这样的事情时:
System.out.println(j + "*" + i + " = " + j*i + "\t");
(注意等号两边的空格),输出混乱:
【问题讨论】:
-
您似乎误解了“标签”的含义。制表符不是一定数量的空格宽,但它用于对齐文本,它在您的代码中执行。
-
您应该查找“标签”的功能。这与 Word 等文本编辑软件中的概念相同。
-
您的第二个输出搞砸了,因为某些文本与制表符一样宽,因此在某些情况下它会跳到第 8 列的制表符位置,而在其他情况下会跳到第 16 列。跨度>
-
Tab 在任何文字处理器中的工作方式都相同。如果
\t之前的文本比设置的tab-position长,tab跳转到下一个tab-position。 -
不同的编辑器、控制台等,对待标签的方式略有不同,行为也取决于字体。通常有一个“制表位”的概念来定义列和列宽。制表符的宽度与到下一个制表位的距离一样宽。有时还有一个额外的要求,即它至少与空格一样宽(所以你最终会到达 next 制表位),有时宽度允许为 0。所有这些实际上都没有与 Java 或 \t 转义有关。在具有等宽字体的控制台上,通常每 8 个字符位置有一个制表位。
标签: java