正賢 發問時間: 電腦與網際網路程式設計 · 1 0 年前

return missing statement

import java.io.* ;

class aa

{

int input1(){

try{

BufferedReader b = new BufferedReader( new InputStreamReader(System.in) );

String str = b.readLine();

int a =Integer.parseInt(str);

return(a);

}

catch(IOException e)

{System.out.println(e.toString());}

}

}

public class test1

{

public static void main(String args[])

{

aa na= new aa();

int c=na.input1();

}

}

哪裡有錯?

已更新項目:

請問Ahiru大大.

你說 int a = -1; // 選一個User永遠不會輸入的數字當錯誤判斷!!!,為何要這樣寫呢?

使用者輸入後被轉成INT a後由於在try中沒出錯所以跳過catch執行retrun(a)把a傳回public class test1 這樣為何不行?

我把int a=-1刪除後編譯會出現錯誤.看不懂為何要加int a=-1這行.可解釋一下嗎?

thanks

1 個解答

評分
  • Ahiru
    Lv 7
    1 0 年前
    最佳解答

    大大你好,

    原因是出在你把 return (a) 的敘述

    放在 try{} 裡面,所以就會出現這個錯誤

    至於為什麼?

    這是因為放在try {} 裡面的敘述

    代表是「有可能」為出錯的

    當出現Exception 出現的時候

    就會「跳過」return a 去執行 catch 裡面的內容

    => 這種情形下就沒有 return a 了

    所以compiler 是不會允許這種寫法的

    你可以改成這樣:

    int input1() {

    int a = -1; // 選一個User永遠不會輸入的數字當錯誤判斷!!!

    try {

    BufferedReader b = new BufferedReader(new InputStreamReader(System.in));

    String str = b.readLine();

    a = Integer.parseInt(str);

    } catch (IOException e) {

    System.out.println(e.toString());

    }

    return (a);

    }

    2010-06-17 20:32:35 補充:

    你不是一樣有宣告int a =Integer.parseInt(str); 嗎?

    我只是把宣告拿到 try{} 的外面而已

    參考資料: 軟體工程師
還有問題?馬上發問,尋求解答。