在java中打印多行输出,而不使用新行字符
这是面试问题之一。我应该在命令行上打印多行输出,而不使用java中的换行符(在java中打印多行输出,而不使用新行字符,java,Java,这是面试问题之一。我应该在命令行上打印多行输出,而不使用java中的换行符(\n)。我试着在谷歌上搜索,但没有找到合适的答案。如果我正在打印5个数字,那么它应该按以下方式打印。但我也不应该使用换行符或循环。我必须使用单个println()语句打印此文件。你能给我一些想法吗?谢谢 1 2 3 4 5 您可以递归地执行此操作: public void foo(int currNum) { if (currNum > 5) return; println(currNum);
\n
)。我试着在谷歌上搜索,但没有找到合适的答案。如果我正在打印5个数字,那么它应该按以下方式打印。但我也不应该使用换行符或循环。我必须使用单个println()
语句打印此文件。你能给我一些想法吗?谢谢
1
2
3
4
5
您可以递归地执行此操作:
public void foo(int currNum) {
if (currNum > 5)
return;
println(currNum);
foo(currNum + 1);
}
然后您只使用一个
println
,而不使用for或while循环。您可以递归执行:
public void foo(int currNum) {
if (currNum > 5)
return;
println(currNum);
foo(currNum + 1);
}
然后,您只使用一个
println
,而不使用for或while循环。可能会根据要求作弊,但技术上只有一个println语句,没有循环
public int recursivePrint(int number)
{
if (number >=5 )
return number;
else
System.out.println(recursivePrint(number++));
}
可能是基于需求作弊,但技术上只有1条println语句,没有循环
public int recursivePrint(int number)
{
if (number >=5 )
return number;
else
System.out.println(recursivePrint(number++));
}
如果不允许您使用
\n
和println()
,则您可以获得系统行。分隔符
,例如
String h = "Hello" + System.getProperty("line.separator") + "World!"
希望这有帮助,玩得开心 如果不允许您使用
\n
和println()
,那么您可以获得系统行。分隔符
,例如
String h = "Hello" + System.getProperty("line.separator") + "World!"
希望这有帮助,玩得开心 一种方法是:平台独立
final String EOL = System.getProperty("line.separator");
System.out.println('1' + EOL + '2' + EOL + '3' + EOL + '4' + EOL + '5');
char eol = (char) 13;
System.out.println("" + '1' + eol + '2' + eol + '3' + eol + '4');
这取决于平台
final String EOL = System.getProperty("line.separator");
System.out.println('1' + EOL + '2' + EOL + '3' + EOL + '4' + EOL + '5');
char eol = (char) 13;
System.out.println("" + '1' + eol + '2' + eol + '3' + eol + '4');
一种方法是:独立于平台
final String EOL = System.getProperty("line.separator");
System.out.println('1' + EOL + '2' + EOL + '3' + EOL + '4' + EOL + '5');
char eol = (char) 13;
System.out.println("" + '1' + eol + '2' + eol + '3' + eol + '4');
这取决于平台
final String EOL = System.getProperty("line.separator");
System.out.println('1' + EOL + '2' + EOL + '3' + EOL + '4' + EOL + '5');
char eol = (char) 13;
System.out.println("" + '1' + eol + '2' + eol + '3' + eol + '4');
好的,现在我想我明白你的问题了。这个怎么样
println(String.format("%d%n%d%n%d%n%d%n%d%n", 1, 2, 3, 4, 5));
好的,现在我想我明白你的问题了。这个怎么样
println(String.format("%d%n%d%n%d%n%d%n%d%n", 1, 2, 3, 4, 5));
无循环,1个println调用,+灵活性:
public static void main (String[] args) {
print(5);
}
final String newLine = System.getProperty("line.separator");
public void print(int fin) {
System.out.println(printRec("",1,fin));
}
private String printRec(String s, int start, int fin) {
if(start > fin)
return s;
s += start + newLine;
return printRec(s, start+1, fin);
}
无循环,1个println调用,+灵活性:
public static void main (String[] args) {
print(5);
}
final String newLine = System.getProperty("line.separator");
public void print(int fin) {
System.out.println(printRec("",1,fin));
}
private String printRec(String s, int start, int fin) {
if(start > fin)
return s;
s += start + newLine;
return printRec(s, start+1, fin);
}
有很多方法可以实现这一点 使用“\n”的一种替代方法是输出字符的字节值。所以,举一个例子,打印出你的例子中的数字1-5的列表
char line = (char)10;
System.out.println("1" + line+ "2" + line+ "3" + line + "4" + line+ "5");
您还可以构建一个byte[]数组或char[]数组并输出
char line = (char)10;
char[] output = new char[9]{'1',line,'2',line,'3',line,'4',line,'5'};
System.out.println(new String(output));
有很多方法可以实现这一点 使用“\n”的一种替代方法是输出字符的字节值。所以,一个例子,打印出你的例子中的数字1-5的列表
char line = (char)10;
System.out.println("1" + line+ "2" + line+ "3" + line + "4" + line+ "5");
您还可以构建一个byte[]数组或char[]数组并输出
char line = (char)10;
char[] output = new char[9]{'1',line,'2',line,'3',line,'4',line,'5'};
System.out.println(new String(output));
新行的ASCII值为10。 所以用这个
char line = 10;
System.out.print("1" + line + "2" + line ......);
新行的ASCII值为10。 所以用这个
char line = 10;
System.out.print("1" + line + "2" + line ......);
旁白:由于System.out
是一个打印流,它可能无法支持转义码
但是,您可以定义自己的println(msg)
函数,并对其进行一次调用。可能是作弊,但除非他们明确地说System.out.println
,否则你就是黄金(该死,即使他们这么做,你也可以在本地范围内使用在函数外部定义的类定义自己的名为System
的对象,给它一个带有函数println(msg)
的字段out
,而你仍然是免费的).
旁白:由于System.out
是一个打印流,它可能无法支持转义码
但是,您可以定义自己的
println(msg)
函数,并对其进行一次调用。可能是作弊,但除非他们明确地说System.out.println
,否则你就是黄金(该死,即使他们这么做,你也可以在本地范围内使用在函数外部定义的类定义自己的名为System
的对象,给它一个带有函数println(msg)
的字段out
,而你仍然是免费的).为什么不能使用\n?因为它取决于平台,或者…?当面试变成琐事比赛时,可能会重复,每个人都会输。知道这条特定的信息应该表明什么?我不是批评你想知道——你没有提出这个问题——但我担心我自己的反应是“我不知道,我也不在乎”。是否允许回车/换行字符?你可以把它们放在每个数字之间,以满足给定的(愚蠢的)要求。@PerryMonschau,我不知道为什么我不能使用\n
,我想知道不使用\n
@rcook是否可以打印这些,这与满足(愚蠢的)要求无关。我想知道是否有办法做到这一点。但是“我不知道也不在乎”的反应不会给出任何答案,是吗?为什么不能使用\n?因为它取决于平台,或者…?当面试变成琐事比赛时,可能会重复,每个人都会输。知道这条特定的信息应该表明什么?我不是批评你想知道——你没有提出这个问题——但我担心我自己的反应是“我不知道,我也不在乎”。是否允许回车/换行字符?你可以把它们放在每个数字之间,以满足给定的(愚蠢的)要求。@PerryMonschau,我不知道为什么我不能使用\n
,我想知道不使用\n
@rcook是否可以打印这些,这与满足(愚蠢的)要求无关。我想知道是否有办法做到这一点。但“我不知道,我也不在乎”的反应并没有给出任何答案,是吗?哇!这真的是递归的吗?哇!这真的是递归的吗?你的回答也很有帮助。谢谢。你的回答也很有帮助。谢谢。从技术上讲,递归函数是循环,因为您可以将它们视为:while(!safected){safected=something(argtuple);callStack.push(argtuple);argtuple=somethingElse(argtuple)};而((argtuple=callstack.pop())!=null){wrapustuff(argtuple)}@扎克:哦,我知道我的评论与这个问题无关。这就是为什么我的评论是:(a)不是回答问题,而是回答,(b)评论,不是回答问题