變量作用域的問題:public String getAnswer() { String myAnswer; try { BufferedReader bfReader=new BufferedReader(new InputStreamReader(System.in)); myAnswer=new String(bfReader.readLine().toString()); System.out.println("你輸入的是:"+myAnswer); } catch(Exception e){} return myAnswer; } }
這個方法總是報錯,按以前的思路,myAnawer應已賦值了,怎會是還沒賦值?
原來,這就是變量的作用域的問題,我把它改為:
public String getAnswer() { String myAnswer=new String(""); //注意這裡 /*總結:定義在某個區域內的變量,必須在這個區域中NEW,象本方法,就不能用 String myAnswer;然後再下一層括號中NEW*/ try { BufferedReader bfReader=new BufferedReader(new InputStreamReader(System.in)); myAnswer=bfReader.readLine().toString(); //System.out.println("你輸入的是:"+myAnswer); } catch(Exception e){} //System.out.println(myAnswer); return myAnswer; }
因為變量的作用域不能跳出它分配空間的那一對大括號 。
當然,也可以把String myAnswer跳出方法體,直接作為類中的一個變量,那麼在方法中也可以直接使用這個變量。如
String myAnswer; public String getAnswer2() { try { BufferedReader bfReader=new BufferedReader(new InputStreamReader(System.in)); myAnswer=new String(bfReader.readLine().toString()); System.out.println("你輸入的是:"+myAnswer); } catch(Exception e){} return myAnswer; }