【问题标题】:Why won't "\t" create a tab?为什么“\t”不创建标签?
【发布时间】:2017-04-13 20:47:58
【问题描述】:

我希望 "Module Code = ""Result = " 用制表符分隔,但每当我运行下面的代码时,它实际上只是输出

"Module Code = Biology\tResult = 40.0"

public String toString()
{
    return "Module Code = " + moduleCode + "\t" + "Result = " + result;

}

【问题讨论】:

  • "\t" 是一个列表,而不是一个新行。新行是“\n”。
  • 如果是单引号,就是字符:char tabChar = '\t';如果它在双引号中,它只是一个转义的 t。
  • @Kylar:不,这根本不是真的。 docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.10.6
  • 你已经有一个标签。但是,该选项卡的呈现方式将取决于您对字符串执行的操作 - 而您还没有告诉我们任何相关信息。
  • @aleb2000:这将完全以相同的方式表现。

标签: java string indentation bluej


【解决方案1】:

为什么不“\t”创建一个新行?

嗯,那是因为 “\t” 是一个制表而不是换行 “\n”

如果你需要换行试试

return "Module Code = " + moduleCode + "\n" + "Result = " + result;

【讨论】:

  • 抱歉打错了,我改了标题。我需要一个标签,而不是一个新行。我怎样才能让“\t”工作?
【解决方案2】:

问题在于您正在 BlueJ 窗口中查看生成的字符串的值。该窗口有利于调试目的,但它不会表现出与正确的输出设备相同的行为,尤其是对于换行符、制表符等字符。这些字符仍然会出现它们的转义序列,就像你一样在你的源代码中输入它们。

换句话说,您的toString() 方法很好,并且可以按预期工作。如果您想查看格式正确的结果,请不要使用 BlueJ 查看它们——将它们打印在其他地方。控制台是个不错的选择:

System.out.println(module.toString());

【讨论】:

    猜你喜欢
    • 2021-12-30
    • 2016-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多