2 回答
TA贡献1777条经验 获得超10个赞
该函数charAt(index)返回一个 char,然后您可以将其隐式解析为 int。'2' 的 int 值为 50,所以它是 50 * 50 = 2500。
一个简单的解决方法是要求输入格式如 A;B。然后你可以执行以下操作:
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条经验 获得超12个赞
您将字符 ( char) 视为数字 ( integer)。这是一个隔离您所看到的内容的示例。
此代码采用字符串值“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
在幕后,任何字符值都以数字表示,因此字符“2”是整数 50。您可以挖掘 ASCII 图表来查看它们是如何映射的。
有很多方法可以修复代码,但由于您已经从字符串值开始,因此获得正确结果的一种方法是使用Integer.parseInt(),如下所示:
int parsedValue = Integer.parseInt("2");
System.out.println("parsedValue: " + parsedValue);
--> parsedValue: 2
添加回答
举报