2015-03-26 3 views
2

У меня есть код Java-кода эха. Я не могу понять одно из утверждений? Код: -Как это работает?

public class testing { 

public static void main(String[] args) { 
    boolean isRedirect = false; 
    if(args.length != 0){ 
     isRedirect = true; 
    } 
    int ch; 
    try{ 
     while ((ch = System.in.read()) != ((isRedirect) ? -1 : '\n')) 
     System.out.print((char) ch); 
    } 
    catch(java.io.IOException ioe){ 
     System.err.println("I/O Error"); 
    } 
    System.out.println(); 
} 
} 

Я знаю, что код создает Boolean, чтобы проверить, является ли вход приходить или нет. Я знаю, что цикл while выводит целые числа, которые '(char)' преобразуются в символы, но я не понимаю, как это делает оператор while. Заранее спасибо.

ответ

3
while ((ch = System.in.read()) != ((isRedirect) ? -1 : '\n')) 

имеет тот же эффект, как:

do { 
    ch = System.in.read(); 
} while(ch != (isRedirect ? -1 : '\n')); 

, который имеет тот же самый эффект, как:

if(isRedirect) { 
    do { 
     ch = System.in.read(); 
    } while(ch != -1); 

} else { 

    do { 
     ch = System.in.read(); 
    } while(ch != '\n'); 
} 

, который, надеюсь понятно.

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