条件打印语句不打印其余部分。 Java的

时间:2015-04-19 19:22:00

标签: java printing conditional-statements

所以这是一个简单的代码,用输入数字调整右边的“st”,“nd”,“rd”,“th”。 由于某种原因,它被置于一个循环中。没关系。

System.out.println("How many?");
int num = x.nextInt();
for(int i=1;i<=num;i++){
    System.out.print("Enter the " + i);
    System.out.println(i==1? ("st"):(i==2? "nd":i==3? "rd":"th") + " number!");
}

当num输入为5时,这里是输出:

Enter the 1st
Enter the 2nd number!
Enter the 3rd number!
Enter the 4th number!
Enter the 5th number!

问题是“数字!”案例“1st”??

3 个答案:

答案 0 :(得分:3)

请注意您的打印条件:

i == 1 ? ("st") : ((i==2? "nd":i==3? "rd":"th") + " number!")
           ^                             ^
         true                          false

我在假部分添加了括号,因此您更容易理解。

我相信你想要的是:

(i == 1 ? ("st") : (i==2? "nd":i==3? "rd":"th")) + " number!"
                                                      ^
              Now we add it to the result of what is returned for the condition.

答案 1 :(得分:3)

你忘记了一对牙套,改变了:

System.out.println(i==1? ("st"):(i==2? "nd":i==3? "rd":"th") + " number!");

为:

 System.out.println((i==1? ("st"):(i==2? "nd":i==3? "rd":"th")) + " number!");
                    ^                                         ^

答案 2 :(得分:2)

System.out.println(i==1? ("st"):(i==2? "nd":i==3? "rd":"th") + " number!");

是问题的根源。你看到你有+“数字!”);之后:分开第1和第2 /第3?你需要两次。

System.out.println(i==1? ("st number"):(i==2? "nd":i==3? "rd":"th") + " number!");

System.out.println((i==1? ("st"):(i==2? "nd":i==3? "rd":"th")) + " number!");