【问题标题】:Trying to use inputs for the script to divide and show the answer尝试使用脚本的输入来划分并显示答案
【发布时间】:2017-03-19 01:36:04
【问题描述】:

我正在尝试做的事情是从用户那里获取输入,并让代码将两个输入分开,当它不分成一个很好的偶数时,将任何需要它的数字列为小数。 这就是我到目前为止所拥有的。

public static void main(String[] args) 
{
    Scanner input = new Scanner(System.in);

    float number1; //first number to divide
    float number2; //second number to divide
    float dividend; //product of division

    System.out.print("Enter first integer: "); //prompt
    number1 = input.nextInt(); // read first number 

    System.out.print("Enter second integer: "); //prompt
    number2 = input.nextInt(); // read second number

    dividend = number1 / number2;

    System.out.printf("%d%s%d%s%d.%n", number1, " divided by ", number2, " is ", dividend); 



}

这实际上是我第一天的编码,所以我希望它会很简单。我通过一些搜索发现使用整数不会报告小数,所以我将数字更改为浮点数。当我将所有数字都作为整数时,它会吐出一个数字,但不会保留余数,所以我只会得到一个偶数。所以我将它们更改为浮点数,现在它只是给我一个错误。我讨厌成为“那个人”,但有人知道我做错了什么吗?

【问题讨论】:

  • 使用scanner.nextFloat()代替scanner.nextInt();

标签: java input decimal division


【解决方案1】:

使用Scanner.nextFloat() 而不是Scanner.nextInt()

System.out.print("Enter first integer: "); //prompt
number1 = input.nextFloat(); // read first number 

System.out.print("Enter second integer: "); //prompt
number2 = input.nextFloat(); // read second number

Scanner.nextFloat() 方法将输入的下一个标记扫描为浮点数,

编辑

这解决了你的另一个问题:

线程“主”java.utilIllegalFormatConversionException 中的异常: d != java.langlFloat at java.util.Formatter$FormatSpecifier.failConversion(Unknown Source)

System.out.printf("%f%s%f%s%f.%n", number1, " divided by ", number2, " is ", dividend); 

f 用于浮点类型。

d代表十进制整数。

Formatting Numeric Print Output

【讨论】:

  • 所以我确实忽略了这一点,但它似乎并没有解决我的问题。 Exception in thread "main" java.utilIllegalFormatConversionException: d != java.langlFloat at java.util.Formatter$FormatSpecifier.failConversion(Unknown Source)。在其他以at 开头的行中。
  • @哦,我看到另一个问题,我会尽快解决。
  • 你先生,太棒了。谢谢!
  • @JonathanBright 请参阅我附加的链接以供进一步阅读。另外,不客气。
【解决方案2】:

由于您从使用 ints 更改为 floats,因此您还必须更改它,以便您的扫描仪采用 float 输入而不是 int 输入。否则,您将收到类型不匹配的错误。为此,请更改以下行:

number1 = input.nextInt();
number2 = input.nextInt();

number1 = input.nextFloat();
number2 = input.nextFloat();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-04
    • 2020-05-14
    • 1970-01-01
    • 1970-01-01
    • 2018-09-15
    • 2022-12-07
    相关资源
    最近更新 更多