2012-03-19 2 views
1

это один из вопросов интервью. Я должен напечатать несколько строк вывода в командной строке, не используя символ новой строки (\n) в java. Я попробовал поиск по сайту, не нашел подходящих ответов. Если я печатаю 5 номеров, тогда он должен печатать следующим образом. Но я не должен использовать символ новой строки или петли. Я должен напечатать это, используя одно сообщениеprintln(). Можете ли вы дать мне несколько идей? Благодаря !Печать нескольких строк в java без использования нового символа линии

1 
2 
3 
4 
5 
+0

Почему вы не можете использовать \ n? Потому что это зависит от платформы или ...? –

+1

Возможный дубликат [Java: как получить независимый от платформы новый символ строки?] (Http://stackoverflow.com/questions/207947/java-how-do-i-get-a-platform-independent-new- line-character) – oers

+5

Когда собеседования превращаются в пустячные конкурсы, каждый проигрывает. Только то, что известно, что определенная часть информации должна указывать так или иначе? Я не критикую вас за то, что вы хотите узнать - вы не создали вопрос, но я боюсь, что моя собственная реакция «я не знаю, и мне все равно». Разрешены ли символы возврата каретки/строки? Вы можете поместить их между номерами и соответствовать (глупым) требованиям, как указано. – arcy

ответ

5

Вы можете сделать это рекурсивно:

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

Тогда вы только с помощью одного println, и вы не используете для или во время цикла.

+0

Спасибо за ответ Зак! – Rakesh

+0

Добро пожаловать. –

+0

Технически рекурсивные функции _are_ loops, потому что вы можете думать о них как: while (! Satisf) {satisf = something (argtuple); callStack.push (argtuple); argtuple = somethingElse (argtuple)}; while ((argtuple = callstack.pop())! = null) {wrapupStuff (argtuple)}; – root

1

Возможно, обман на основе требований, но технически только 1 инструкция println и отсутствие петель.

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

Упс! Действительно ли это рекурсивно? –

+0

Действительно. Исправлена. – Thomas

4

Если вы просто не разрешается использовать \n и println(), то вы можете получить системы line.separator, например,

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

Надеюсь, что это помогло, повеселиться!

+0

Ваш ответ также полезен. Благодарю. – Rakesh

+0

Добро пожаловать! Ура! – SimonSez

2

Один из способов заключается в следующем: Платформа Независимые

final String EOL = System.getProperty("line.separator"); 
System.out.println('1' + EOL + '2' + EOL + '3' + EOL + '4' + EOL + '5'); 

Это Platform Dependent

char eol = (char) 13; 
System.out.println("" + '1' + eol + '2' + eol + '3' + eol + '4'); 
2

Хорошо, теперь я думаю, что я понимаю ваш вопрос. Как насчет этого? не

println(String.format("%d%n%d%n%d%n%d%n%d%n", 1, 2, 3, 4, 5)); 
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); 
} 
1

Есть много способов для достижения этой цели ...

Одна альтернативы использованию '\ п' для вывода на байта для символа. Таким образом, пример, чтобы распечатать свой список чисел 1-5 в вашем примере ...

char line = (char)10; 
System.out.println("1" + line+ "2" + line+ "3" + line + "4" + line+ "5"); 

Вы также мог бы построить байты [] массив или обугливаетесь [] массив и вывод, что ...

char line = (char)10; 
char[] output = new char[9]{'1',line,'2',line,'3',line,'4',line,'5'}; 
System.out.println(new String(output)); 
0

значение ASCII новой линии 10. Поэтому использовать этот

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

ANSI terminal escape codes can do the trick.

Помимо этого:Since System.out - это PrintStream, возможно, он не сможет поддерживать коды эвакуации.

Вы можете определить вашу собственную функцию println(msg) и сделать один звонок на это. Могут быть обманы, но если они явно не говорят System.out.println, вы являетесь золотым (черт, даже если это так, вы можете определить свой собственный объект с именем System в локальной области видимости, используя класс, определенный вне вашей функции, дать ему поле out с function println(msg), и вы все еще свободны от шотландцев).

Смежные вопросы