这个while语句如何工作?

时间:2015-03-26 06:29:10

标签: java

我有一个echo文本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();
}
}

我知道代码会创建一个布尔值来检查输入是否来了。我知道while循环输出'(char)'转换为字符的整数,但我不明白while语句是如何做到这一点的。提前谢谢。

1 个答案:

答案 0 :(得分: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');
}

希望可以理解。