3
int n ;
n= (int)( javax.swing.JOptionPane.showInputDialog(null,"enter a 3 digit no."));

为什么上面给出了错误 [required int, found string] 而下面的工作正常?

int n ;
n= Integer.parseInt( javax.swing.JOptionPane.showInputDialog(null,"enter a 3 digit no."));
4

3 回答 3

9

Integer.parseInt不使用强制转换,而是使用简单的算法将字符串中的数字解释为数字。转换由 JVM 直接在原始值上完成,或者由编译器在对象引用上完成。它可以4.5变成4类型转换,因为它改变了基础值)和(引用转换ArrayList,因为它不修改实例),但它不能本地解析或格式化数字。List

于 2012-05-27T19:59:51.737 回答
8

类型转换不是类型转换,不要混淆术语。强制转换意味着将相同的二进制表示重新解释为另一种类型的值。在 Java 中存在转换,但仅限于原始数值之间。String 是一种引用类型,我想你知道这一点。

于 2012-05-27T20:00:35.137 回答
1

Java 只允许您进行有效的强制转换,即它知道如何进行的强制转换。将字符串转换为 int 是荒谬的;解析它不是。

于 2012-05-27T20:04:13.610 回答