2 回答

TA貢獻1777條經(jīng)驗 獲得超10個贊
該函數(shù)charAt(index)返回一個 char,然后您可以將其隱式解析為 int。'2' 的 int 值為 50,所以它是 50 * 50 = 2500。
一個簡單的解決方法是要求輸入格式如 A;B。然后你可以執(zhí)行以下操作:
String s =JOptionPane.showInputDialog("Enter two numbers like this: Number A;Number B", "AB");
String[] temp = s.split(";");
if(temp.length == 2) {
try {
int aNum = Integer.parseInt(temp[0]);
int bNum = Integer.parseInt(temp[1]);
int cNum = aNum*bNum;
} catch(NumberFormatException nfe) {
// One or both of the values weren't ints.
}
} else {
// Some error here, because of too few/ too many values
}

TA貢獻1874條經(jīng)驗 獲得超12個贊
您將字符 ( char) 視為數(shù)字 ( integer)。這是一個隔離您所看到的內(nèi)容的示例。
此代碼采用字符串值“2”并從中獲取一個字符,然后打印該字符。
char c = "2".charAt(0);
System.out.println("c: " + c);
--> c: 2
如果您嘗試相同的操作,但將結果存儲為 an int,則存儲的值不是同一件事,而是“50”:
int i = "2".charAt(0);
System.out.println("i: " + i);
--> i: 50
在幕后,任何字符值都以數(shù)字表示,因此字符“2”是整數(shù) 50。您可以挖掘 ASCII 圖表來查看它們是如何映射的。
有很多方法可以修復代碼,但由于您已經(jīng)從字符串值開始,因此獲得正確結果的一種方法是使用Integer.parseInt(),如下所示:
int parsedValue = Integer.parseInt("2");
System.out.println("parsedValue: " + parsedValue);
--> parsedValue: 2
添加回答
舉報