代码如下:public class Test
{
  public static void main(String[] args)
  {
    int x = args[0];
    (x == 5) ? "yes" : "no";
  }
}为什么用cmd编译时会出现这样的错误提示:(x == 5) ? "yes" : "no";
         ^ not a statement难道这个问号也跟汉字一样,不被支持?

解决方案 »

  1.   

    不是问号出了问题。
    是三目运算符的结果只能作为一个值赋给一个变量。类似于下面的例子:  public static void main(String args[]) {
        int x = 0; 
        5; // 这个5能作为一个statement吗?
      }
      

  2.   

    你这程序有错啊int x = args[0];  //Type mismatch: cannot convert from String to int
    public class Test
    {
      public static void main(String[] args)
      {
        int x = Integer.parseInt(args[0]);
        String s = x == 5 ? "yes" : "no";  //这里,好像不能单独用x == 5 ? "yes" : "no"吧,要将它赋给一个variable
      }
      

  3.   

    三元运算符不要直接用,他是有返回值的。三元运算必须出现在赋值语句中,比如:int a=(4>5?4:5)就可以,不能单独作为语句使用。
      

  4.   

    答:你是想写一个表达式语句,你认为:(x == 5) ? "yes" : "no" 是一个表达式,则加上;后就成为一个语句了?
    这个在C/C++中正确的,在JAVA中对表达式有特定的要求.即:  表达式E;  
    要形成一个表达式语句,则表达式E必须只能是:赋值表达式,自增++表达式,自减--表达式,方法调用表达式,new 表达式.