如下代码编译时会提示错误:public class Test1
{
  public static void main(String[] args)
  {
    int x = Integer.parseInt(args[0]);
    x == 5 ? "yes" : "no";
  }
} 错误是:
(x == 5) ? "yes" : "no"; 
        ^ not a statement 如果将以上代码改成:public class Test1
{
  public static void main(String[] args)
  {
    int x = Integer.parseInt(args[0]);
    String s = x == 5 ? "yes" : "no";
  }
} 则解除了问题那么以此类推,有返回值的方法,应该也不能够独立成句
可事实上并非这样,以下代码成功编译并运行,为什么会这样呢???public class Test2
{
  public static double method()
  {
    return 10;
  }
  
  public static void main(String[] args)
  {
    method();
  }

解决方案 »

  1.   

    楼上说得对
    x == 5 ? "yes" : "no";相当于:
    if(x == 5){
     "yes";
    }else{
     "no";
    }
    "yes";和"no";算句子吗?
    method();这才是个正常的句子,返回值可以再内存中废弃
      

  2.   


    什么叫赋值语句?没听说赋值表达式吧。<assignmentStatemet> ::= <left> <assignOp> <right>
    <left> ::= <Identifier>
    <assignOp> ::= += | -= | *= | /= | %= | =
    <right> ::= <Expression>表达式往往嵌入在语句中
    如if语句,if ( [表达式] ) [语句]
    赋值语句, [变量名] [赋值操作符] [表达式]三元操作符也是表达式之一,
    语句里没有三元语句的定义
      

  3.   

    public class Test1
    {
      public static void main(String[] args)
      {
        int x = Integer.parseInt(args[0]);
        x == 5 ? System.out.println("true") : System.out.println("true");
      }
    } 这算不算句子?如果算的话,那么很可惜的告诉你:“不是语句”
    我也不是很明白Java中的三目运算符,前些天还碰过到呢。
      

  4.   

    表达式是嵌入在语句里的,
    比如说三元运算符和赋值语句int a =1;
    int b = (a>0) ? 1 : 0;
      

  5.   

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