慕田峪7331174
2022-12-21 13:01:38
我正在制作一個將數字轉換為文本的轉換器。我按照本網站中所說的進行了所有操作,并針對使用大整數進行了編輯,但隨后顯示變量未初始化。我編輯了一些東西以使其與大整數兼容以獲得更大的數字,但它只是顯示變量 veryFar 可能未初始化。(我編輯了變量名來嘗試修復它?。?。package com.example.convertnumbertotext;import java.math.BigInteger;import java.text.DecimalFormat;public class EnglishNumberToWords { private static BigInteger bi = new BigInteger("100"); private static BigInteger bi2 = new BigInteger("20"); private static BigInteger bi3 = new BigInteger("10"); private static final String[] tensNames = { "", " ten", " twenty", " thirty", " forty", " fifty", " sixty", " seventy", " eighty", " ninety" }; private static final String[] numNames = { "", " one", " two", " three", " four", " five", " six", " seven", " eight", " nine", " ten", " eleven", " twelve", " thirteen", " fourteen", " fifteen", " sixteen", " seventeen", " eighteen", " nineteen" }; private static String convertLessThanOneThousand(BigInteger number) { String veryFar; BigInteger[] bii = number.divideAndRemainder(bi); BigInteger[] bii2 = number.divideAndRemainder(bi3); int resut = bii[1].compareTo(bi2); if (resut == -1) { veryFar = numNames[bii[1].intValue()]; number = number.divide(bi); } else if (resut == 1 || resut == 0) { veryFar = numNames[bii2[1].intValue()]; number = number.divide(bi3); veryFar = tensNames[bii2[1].intValue()] + veryFar; number = number.divide(bi3); } if (number.compareTo(BigInteger.valueOf(0)) == 0) return veryFar; return numNames[number.intValue()] + " hundred" + veryFar; }}它顯示 2 條相同的錯誤消息 - 錯誤:變量 veryFar 可能尚未初始化 錯誤:變量 veryFar 可能尚未初始化
2 回答

慕哥9229398
TA貢獻1877條經驗 獲得超6個贊
修剪下來,你有這個代碼:
String veryFar;
...
if (resut == -1) {
veryFar = numNames[bii[1].intValue()];
...
} else if (resut == 1 || resut == 0) {
veryFar = numNames[bii2[1].intValue()];
...
}
如果結果不是 -1、0 或 1,則不會執行這些塊。在那種情況下,veryFar永遠不會被賦值。
要么在聲明它時對其進行初始化(如String veryFar = null),要么添加一個else為其賦值的案例。

桃花長相依
TA貢獻1860條經驗 獲得超8個贊
請注意,合同compareTo是返回<0, 0or >0, not -1 , 0or 1。
比較 -1 和 1 exactly 有時可能有效,但它通常不起作用(例如,它不適用于比較字符串),并且容易受到類內部實現細節變化的影響。
因此,將您的條件更改為:
if (resut < 0) { // instead of == -1
// ...
} else { // instead of == 0 || == 1
// ...
}
然后你的變量將始終被初始化。
添加回答
舉報
0/150
提交
取消