所以基本上我尝试了两件事。我会给你代码:
double number;
Scanner input = new Scanner(System.in);
System.out.println("Name a number!");
number = input.nextDouble();
number = Math.floor(number);
System.out.println(number);
和这一个:
double number;
Scanner input = new Scanner(System.in);
System.out.println("Name a number!");
number = Math.floor(input.nextDouble());
System.out.println(number);
但他们似乎都没有工作......任何人都可以帮助我吗?我基本上想要整理用户的输入。是否可以将double变为整数?例如:控制台询问“你想要多少薯条”然后用户决定有趣并说4.5。这会给我一个错误。我希望控制台自动将4.5转换为4。
编辑:我不知道这是否有帮助...但我只有1个班级,这就是全班的样子:package package.name;
import java.util.Scanner;
public class TestingJava
{
public static void main(String[] args){
double number;
Scanner input = new Scanner(System.in);
System.out.println("Name a number!");
number = input.nextDouble();
number = Math.floor(number);
System.out.println(number);
}
}
这是我输入类似3.6的数字时出现的错误:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextDouble(Unknown Source)
at package.name.TestingJava.main(TestingJava.java:10)
当我给出数字“2”时,它会回复“2.0”,但是当我做出一个分数时,它就会无效。
答案 0 :(得分:0)
你的任何一个尝试都应该按原样运行,除了它们将给出4.0的倍值而不是整数值4.如果你想将它存储为整数,你可以尝试使用以下行进行转换。端:
int integralNumber = (int)number;
编辑:看起来你得到了一个例外。进入System.in
的值必须不是您期望的值,因为编写的代码有效。您可以尝试以下方法来查找输入内容:
package package.name;
import java.util.Scanner;
public class TestingJava
{
public static void main(String[] args){
double number;
Scanner input = new Scanner(System.in);
System.out.println("Name a number!");
if(input.hasNextDouble()){
number = input.nextDouble();
number = Math.floor(number);
System.out.println(number);
} else {
System.out.println("Expected a double but received " + input.next());
}
}
}
另一种可能是区域设置不正确。扫描仪可能会对小数点是多少感到困惑。如果英语不是默认语言环境,您可以在初始化扫描程序后尝试此操作:
input.useLocale(Locale.ENGLISH);
答案 1 :(得分:0)
在Java中,我认为它是
Math.Ceil(number);
int num = (int)number;
圆形向上和地板向下舍入?因此,首先将其四舍五入,然后使用(int)将其转换为整数。
答案 2 :(得分:0)
你能给出一个分数的例子吗?
如果我以1.3为例,我将获得1.0的输出,如预期的那样。然而,如果输入1/3之类的东西,我会得到你所看到的错误,这也是我所期待的(因为它不是双倍的 - 它可能是一个字符串)