-1

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

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);

但他们似乎都没有工作......有人可以帮我吗?我基本上想收集用户的输入。是否可以将双精度数转换为整数?例如:控制台询问“你想要多少薯条”,然后用户决定搞笑并说 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”,但是当我做一个分数时,它就不起作用了。

4

3 回答 3

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());
    }
  }
}

另一种可能性是语言环境不正确。扫描仪可能对小数点是什么感到困惑。如果英语不是默认语言环境,您可以在初始化 Scanner 后尝试以下操作:

input.useLocale(Locale.ENGLISH);
于 2013-02-13T19:38:24.753 回答
0

在Java中,我认为是

Math.Ceil(number);
int num = (int)number;

向上舍入,地板向下舍入?因此,先将其四舍五入,然后使用 (int) 将其转换为整数。

于 2013-02-13T19:49:33.573 回答
0

你能举个分数的例子吗?

例如,如果我 ender 1.3,我将得到 1.0 的输出,正如预期的那样。但是,如果输入类似 1/3 的内容,我会收到您所看到的错误,这也是我所期望的(因为它不是双精度 - 它可能是一个字符串)

于 2013-02-13T20:20:00.633 回答