为什么这样有语法错误if(message != null)
String changedmessage = message.toUpperCase();
如果把changedmessage提前申明成局部变量或者这样if(message != null) {
   String changedmessage = message.toUpperCase();
}
就没语法错误呢。

解决方案 »

  1.   

    Syntax error, insert "AssignmentOperator Expression" to complete Assignment不能直接定义,如果加个大括号就可以了,这个就是表达式和语句的区别if(message != null)
    int aaaaa = message.length();这样写 一样报错
      

  2.   

    String changedmessage = message.toUpperCase();
    这里这句相当于是两句:
    String changedmessage=null;
    changedmessage=message.toUpperCase();
    如果你不使用{}就会找不到changedmessage
      

  3.   

    String changedmessage = message.toUpperCase();
    这里这句相当于是两句:
    String changedmessage=null;
    changedmessage=message.toUpperCase();
    如果你不使用{}就会找不到changedmessage
      

  4.   

    if(...)等控制条件,如果不带程序块标示{},那么默认旗下面第一句就是控制条件成立时执行的语句。虽然String changedmessage=message.toUpperCase(); 写起来是一句,但实际上是String changedmessage=null; changedmessage=message.toUpperCase(); 这就变成了
    if(message != null){
        String changedmessage=null;
    }
    changedmessage=message.toUpperCase();changedmessage的定义在程序块的内部,其作用域只在if程序块的内部,所以就会错误
      

  5.   

    答:7楼的说法当然是错误的.
    因为:按照7楼的说法,将:
    String changedmessage=message.toUpperCase(); 
    改为:String changedmessage=null;是不是就可以了?
    根本不是这回事.与是一条语句,还是两条语句根本就没有关系.真正的原因是:JAVA语言就是这么规定的:(见JLS 14.2节)
    局部变量语句就只能在 一个block中定义.而一个block ,就是一对{}括号,内部放0条或多条语句.
    因此:
    if(exp)
      int v=0;//错误
    只能:
    if(exp)
     { int v=0;//正确
     }
      

  6.   

    if(message != null)
        String changedmessage=message.toUpperCase();//上面报的错误是:Test.java:9不是语句
    如果说是等同与以下代码的话(下面代码),提示错误因该是changedmessage找不到符号才对啊

    if(message != null){
        String changedmessage=null;
    }
    changedmessage=message.toUpperCase();继续分析
      

  7.   


    String changedmessage = message.toUpperCase(); 这里这句相当于是两句: String changedmessage;
    changedmessage=message.toUpperCase(); 如果你不使用{}就会找不到changedmessage
      

  8.   

    局部变量语句就只能在 一个block中定义