在double变量上使用Math.floor将不起作用。 Java(使用Eclipse)

时间:2013-02-13 19:28:47

标签: java variables math double

所以基本上我尝试了两件事。我会给你代码:

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”,但是当我做出一个分数时,它就会无效。

3 个答案:

答案 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之类的东西,我会得到你所看到的错误,这也是我所期待的(因为它不是双倍的 - 它可能是一个字符串)