在java中打印多行输出而不使用新行字符

时间:2012-03-19 12:49:47

标签: java

这是面试问题之一。我应该在命令行上打印多行输出,而不使用java中的换行符(\n)。我试着谷歌搜索,没有找到合适的答案。如果我打印5个数字,则应按以下方式打印。但我不应该使用换行符也不应该循环。我必须使用单个 println()语句进行打印。你能给我一些想法吗?谢谢!

1
2
3
4
5

9 个答案:

答案 0 :(得分:5)

您可以递归地执行此操作:

public void foo(int currNum) {
  if (currNum > 5) 
    return;
  println(currNum);
  foo(currNum + 1);
}

然后你只使用一个println并且你没有使用for或while循环。

答案 1 :(得分:4)

如果您不允许使用\nprintln(),那么您可以获得系统 line.separator ,例如

String h = "Hello" + System.getProperty("line.separator") + "World!"

希望这有帮助,玩得开心!

答案 2 :(得分:2)

一种方法是:平台无关

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');

答案 3 :(得分:2)

好的,现在我想我理解你的问题。那怎么样?

println(String.format("%d%n%d%n%d%n%d%n%d%n", 1, 2, 3, 4, 5));

答案 4 :(得分:1)

可能根据要求作弊,但技术上只有1个println语句,没有循环。

public int recursivePrint(int number)
{
  if (number >=5 )
    return number;
  else
    System.out.println(recursivePrint(number++));
}

答案 5 :(得分:1)

有很多方法可以实现这一目标......

使用'\ 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));

答案 6 :(得分:0)

无循环,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);
}

答案 7 :(得分:0)

新线的ASCII值为10。 所以使用这个

char line = 10;
System.out.print("1" + line + "2" + line ......);

答案 8 :(得分:0)

ANSI terminal escape codes can do the trick.

除此之外: Since System.out是一个PrintStream,它可能无法支持转义码。

但是,您可以定义自己的println(msg)函数,并对其进行一次调用。可能是作弊,但除非他们明确说出System.out.println,否则你是黄金的(地狱,即使他们这样做了,你也可以使用在你的函数之外定义的类在本地范围内定义你自己的名为System的对象给它一个字段out,其函数为println(msg),你仍然没有scot。)