在 Android Studio 專案中編譯時提示:「找不到符號 變數 NumberFormat」,並附上截圖顯示錯誤行數。
錯誤通常發生在將變數宣告或初始化代碼直接寫在類別主體中,而非置於方法(如 onCreate())內部。Java 語法規定:類別主體僅能包含欄位宣告、方法、建構子、初始化區塊等,不能直接執行賦值或方法呼叫語句。
將報錯的代碼行(通常是涉及 NumberFormat 實例化或格式化操作的語句)移入 onCreate(Bundle savedInstanceState) 方法內部,確保在 Activity 生命週期啟動時執行。
public class MainActivity extends AppCompatActivity {
NumberFormat nf = NumberFormat.getInstance(); // 錯誤:若後續有賦值/方法調用語句直接寫在這裡
nf.setMaximumFractionDigits(2); // 編譯錯誤:找不到符號,因為這不是宣告語句
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
public class MainActivity extends AppCompatActivity {
NumberFormat nf; // 僅宣告欄位
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
nf = NumberFormat.getInstance(); // 在方法內初始化
nf.setMaximumFractionDigits(2); // 在方法內調用方法
}
}
NumberFormat 僅在單一方法中使用,建議直接在方法內宣告為區域變數,減少成員變數汙染。java.text.NumberFormat。「找不到符號」錯誤多因代碼寫在類別主體非允許位置。將相關邏輯移入 onCreate() 或其他方法內即可解決。