【问题标题】:Double and Int dr. java双和国际博士。爪哇
【发布时间】:2014-09-18 23:43:16
【问题描述】:

这是作业: 编写一个读取两个双精度值作为输入的 java 程序。您的程序将需要使用 Scanner 类来读取这两个值。使用这两个值,您的程序需要输出以下内容: 将第一个值乘以第二个值的乘积,作为双精度值 将第一个值除以第二个值的商,作为双精度数 第一个值乘以第二个值的乘积,作为 int 第一个值除以第二个值的商,以 int 形式表示

这是我的代码:

import java.util.Scanner;
public class Question_12 {

  public static void main(String[] args) {

  double ProductofDouble; 
  double QuotientofDouble;
  int ProductofInt;
  int QuotientofInt;

  double ValueA;
  double ValueB;

  Scanner keyboard = new Scanner(System.in);
    System.out.println("Enter Value A: ");
    ValueA = keyboard.nextDouble();

    System.out.println("Enter Value B: ");
    ValueB = keyboard.nextDouble();

  //calc product as double
  ProductofDouble = ValueA * ValueB;
  //calc quotient as double
  QuotientofDouble = ValueA / ValueB;
  //calc product as int
  ProductofInt = ValueA * ValueB;
  //calc quotient as int
  QuotientofInt = ValueA / ValueB;

  System.out.println("The product of Value A and Value B as a double is: " +      ProductofDouble);
  System.out.println("The quotient of Value A and Value B as a double is: " +     QuotientofDouble);
  System.out.println("The product of Value A and Value B as an int is: " + ProductofInt);
  System.out.println("The quotient of Value A and Value B as an int is: " + QuotientofInt);

} }

The Error: 
    2 errors found:
File: /Users/gcaruso/Documents/CISS 110/Module 3/Question_12.java  [line: 26]
Error: /Users/gcaruso/Documents/CISS 110/Module 3/Question_12.java:26: possible loss of precision
found   : double
required: int
File: /Users/gcaruso/Documents/CISS 110/Module 3/Question_12.java  [line: 28]
Error: /Users/gcaruso/Documents/CISS 110/Module 3/Question_12.java:28: possible loss of precision
found   : double
required: int

我知道您不应该在 int 中使用双精度值,但我不知道有任何其他方法可以执行此分配。

谢谢!

【问题讨论】:

  • 您可以通过将 double 转换为 int 来规避该错误:int integer = (int)originalDouble。这会将其向下舍入到最接近的整数。它不会自动为您执行此操作,因为这是一个经常犯的错误,因此需要确保程序员想要将其舍入。另请注意,Java 中的约定是变量名以小写字母开头。

标签: java int double


【解决方案1】:

您将需要使用一种称为强制转换的操作类型来显式缩小从double 到int 的类型:

ProductofInt = (int)(ValueA * ValueB);

另外,看看你的代码,我会提出几点改进:

  • 类名应该是 PascalCase,而不是 Captialized_And_Underscored。因此,您的班级名称将更可行为Question12。
  • 变量名应该是camelCase,例如productAsDouble。此外,“as”这个词比“of”更有意义——你将乘积表示为双精度/整数,而不是使用特定整数或双精度的乘积(你的因子/除数/股息总是双打)
  • 您应该尽可能将变量声明为 late 以提高可读性。不要在顶部声明ProductOfDouble,然后再设置,而是同时声明和设置:

    double ProductofDouble = ValueA * ValueB;
    

【讨论】:

    【解决方案2】:

    这是 java 检测您在做什么并认为这可能是您的错误 - ints 不如 doubles 具体。

    要修复它,请使用演员表:

    ProductofInt = (int)(ValueA * ValueB);
    QuotientofInt = (int)(ValueA / ValueB);
    

    【讨论】:

    • @hexafraction 修正了您所指的缺失括号。
    【解决方案3】:

    您使用 Double 来计算 int 结果,double 比 int 更精确,因此您失去了精度。您需要做的是通过执行以下操作将变量从 double 转换为 int double a; a=(int) b;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多