我創建了一個保存和加載BigInteger和String變量的程序。當我已經開始計劃充分顯示了異常:Java long不能轉換爲字符串
java.lang.ClassCastException:java.lang.Long中不能轉換爲java.lang.String
它說,它發生在這裏:
robotPrices[0] = new BigInteger(sharedPreferences.getString("rbt1price", "100"));
我的節能方法:
public void save() {
SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("rbt1price", robotPrices[0].toString());
editor.putString("rbt2price", robotPrices[1].toString());
editor.putString("rbt3price", robotPrices[2].toString());
editor.putString("rbt4price", robotPrices[3].toString());
editor.putString("rbt5price", robotPrices[4].toString());
editor.putString("rbt1qu", robotQu[0].toString());
editor.putString("rbt2qu", robotQu[1].toString());
editor.putString("rbt3qu", robotQu[2].toString());
editor.putString("rbt4qu", robotQu[3].toString());
editor.putString("rbt5qu", robotQu[4].toString());
editor.putLong("lvl", lvl);
editor.apply();
}
我的加載方法:
private void load() {
SharedPreferences sharedPreferences =
PreferenceManager.getDefaultSharedPreferences(this);
lvl = sharedPreferences.getLong("lvl", 1);
robotPrices[0] = new BigInteger(sharedPreferences.getString("rbt1price", "100"));
robotPrices[1] = new BigInteger(sharedPreferences.getString("rbt2price", "1100"));
robotPrices[2] = new BigInteger(sharedPreferences.getString("rbt3price", "12000"));
robotPrices[3] = new BigInteger(sharedPreferences.getString("rbt4price", "130000"));
robotPrices[4] = new BigInteger(sharedPreferences.getString("rbt5price", "1400000"));
robotQu[0] = new BigInteger(sharedPreferences.getString("rbt1qu", "0"));
robotQu[1] = new BigInteger(sharedPreferences.getString("rbt2qu", "0"));
robotQu[2] = new BigInteger(sharedPreferences.getString("rbt3qu", "0"));
robotQu[3] = new BigInteger(sharedPreferences.getString("rbt4qu", "0"));
robotQu[4] = new BigInteger(sharedPreferences.getString("rbt5qu", "0"));
}
編輯: 這並不工作過:
robotPrices[0] = new BigInteger(sharedPreferences.getLong("rbt1price", 100));
但是我需要BigInteger構造函數的字符串值,而不是一個很長的值 –
您不會違反Java的規則來獲取它。你有沒有考慮閱讀'BigInteger'文檔?爲什麼不? http://docs.oracle.com/javase/8/docs/api/java/math/BigInteger.html#valueOf-long- –
但我把這個值保存爲字符串沒有這麼長,所以我不能getLong()在哪裏我有String –