【问题标题】:Java beginner - escape sequences [duplicate]Java初学者-转义序列[重复]
【发布时间】: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


【解决方案1】:

默认情况下,制表符 (\t) 形成一个“表格”,因此列具有固定大小(制表符宽度)。在控制台中,会添加空格,直到下一列开始。

如果您的文本比列宽(或与第二个示例一样宽),则下一列将被跳过(这就是添加额外列的原因),结果看起来有点奇怪。

您可以使用简单的文本编辑器进行尝试,只需按下制表键,您将看到相同的行为:

a       b       c
looooooong      d       e

【讨论】:

    猜你喜欢
    • 2010-09-15
    • 1970-01-01
    • 2015-02-11
    • 2019-05-30
    • 2022-10-15
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    • 2020-05-01
    相关资源
    最近更新 更多