Java 爪哇>;int到double(扫描仪>;系统输出)
这是我的第一个问题)希望有人能帮忙: 我正在尝试编写下一个程序: 所以我有1个输入,最多2个输出 首先,我检查输入是否为(int!) 如果为TRUE,我打印出消息“是的,它是整数”,并显示“在变量int中保存的数字” 但如果我输入double,我想打印message=(“不,它不是INT)+ 并以双格式显示它 当我输入int时一切正常,但当我输入double时就不正确了Java 爪哇>;int到double(扫描仪>;系统输出),java,int,double,Java,Int,Double,这是我的第一个问题)希望有人能帮忙: 我正在尝试编写下一个程序: 所以我有1个输入,最多2个输出 首先,我检查输入是否为(int!) 如果为TRUE,我打印出消息“是的,它是整数”,并显示“在变量int中保存的数字” 但如果我输入double,我想打印message=(“不,它不是INT)+ 并以双格式显示它 当我输入int时一切正常,但当我输入double时就不正确了 public class Scan { public static void main(String[] args)
public class Scan {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int check;
System.out.println("Your number? ");
if(sc.hasNextInt()){
check=sc.nextInt();
System.out.println("OKEI "+check+ " IT IS INTEGER! ");}
else if(sc.hasNextDouble()){
check=sc.nextDouble();
System.out.println("Nooo " + check + " NO it is not INT");
}
}
}
一种解决方案是将
check
改为double
,并将检查更改为:
if (check == Math.floor(check))
在您的解决方案中,您试图将一个double
分配给一个int
。由于它不适合,它将失去精度并被截断
最终解决方案应如下所示:
Scanner sc = new Scanner(System.in);
check = sc.nextDouble();
if (check == Math.floor(check)) {
// an "int"
} else {
// not integer
}
创建一个新的双变量,并将sc.nextDouble()指定给该双变量 例如: 双重检查;
将int转换为双倍值,可能会有所帮助
else if (sc.hasNextDouble()) {
check = (int) sc.nextDouble();
System.out.println("Nooo " + check + " NO it is not INT");
}
在Eclipse中尝试代码时,使用
check=sc.nextDouble()
(check
作为int
)时出现错误,您可以这样修复它:
public static void main(final String[] args) {
System.out.println("Your number? ");
final Scanner sc = new Scanner(System.in);
if (sc.hasNextInt()) {
final int check = sc.nextInt();
System.out.println("OKEI " + check + " IT IS INTEGER! ");
} else if (sc.hasNextDouble()) {
final double check = sc.nextDouble();
System.out.println("Nooo " + check + " NO it is not INT");
} else {
System.out.println("Failed.");
}
}
这样,使用
Math.floor
或cast时不会丢失任何小数部分。什么意思当我输入double时,它是不正确的
@Jens他可能是指他输入了一个double
,但它的行为类似于一个整数(因为他存储该double
输入的变量是一个整数)。请注意,Double格式取决于区域设置的使用,因此根据系统配置,Double可能是1.25
或1,25
如果(check-(int)check==0),我将使用
但这不会有太大区别。谢谢Maroun Maroun,我想这是我第一次不使用数学库)确定这很舒服)我输入了1.25,我的信息是(Nooo 1不,它不是INT),所以1.25转换为1(我尝试使用相同的==1.25)),谢谢,你的代码和Lwax回答的一样。但我看到constanta(最终)请说明为什么我们必须使用它?因为我的Eclipse配置为使所有变量/参数/成员都不会被修改为最终版本。至于为什么要使用它?禁止更改值(或对象的引用)-我认为这对于参数/成员很重要,对于变量则不太重要。
public static void main(final String[] args) {
System.out.println("Your number? ");
final Scanner sc = new Scanner(System.in);
if (sc.hasNextInt()) {
final int check = sc.nextInt();
System.out.println("OKEI " + check + " IT IS INTEGER! ");
} else if (sc.hasNextDouble()) {
final double check = sc.nextDouble();
System.out.println("Nooo " + check + " NO it is not INT");
} else {
System.out.println("Failed.");
}
}