我写了最简单的Hello, World! 应用:public class Helloworld { public static void main(String[] args) { System.out.println("Hello\nHello"); }}当它运行时,结果是:HelloHello但如果我Hello\nHello用作参数,public class Helloworld { public static void main(String[] args) { System.out.println(args[0]); }}结果是Hello\nHello。我如何获得两行结果?
3 回答
肥皂起泡泡
TA贡献1829条经验 获得超6个赞
编辑:此答案适用于理解为的原始问题
为什么当我用
Hello\nHello
Java编写然后打印它时,我得到两行文本,但是当我Hello\nHello
在终端中编写并将其作为参数传递给我的 Java 程序时,我得到一行文本?
如果你的意思是
有没有办法将一个字符串参数传递给我的java程序,该程序打印在多行上?
请参阅@DodgyCodeException's answer,它更适合该公式。
当您在 Java 中定义String
as"Hello\nHello"
时,它不包含任何'\'
字符。它是换行符的转义序列:"\n"
只是一个字符。但是,当您将此字符串用作程序的参数时(因此字符串在之外定义),将"\n"
被解释为两个字符:'\'
和'n'
。你必须用换行符替换这两个字符,知道要匹配'\'
你必须用'\'
:
System.out.println(args[0].replace("\\n", "\n"));
对于可移植性问题,您还可以System.lineSeparator()
用作替换字符串。
catspeake
TA贡献1111条经验 获得超0个赞
显然你不能马上做,但做以下技巧会得到你需要的东西:
System.out.println(String.format(args[0]));
这里使用String#format 并将新行作为新行的转换序列传递。(请参阅格式字符串语法)。
所以调用你的程序
java Helloworld "hello%nnworld"
将打印
hello workd
如果你需要输出%n
自己,那么你可以用另一个 '%' 引用 '%' 即
java Helloworld "hello%%nnworld"
以上将打印:
hello%nnworld
添加回答
举报
0/150
提交
取消