当前位置: 首页 > 知识库问答 >
问题:

尝试创建双精度变量类型的数组时出错

左丘昕
2023-03-14

我正在尝试创建一个程序,它从用户那里获取两倍的值,并将它们存储在数组中,然后再对它们进行分割和四舍五入。然而,我在尝试创建双数组时不断收到错误消息。

 double n = sc.nextDouble();

    double a[] = new double[n];
    double b[] = new double[n];
    double roundedValues[] = new double[n];

    for (double i = 0; i < a.length; i++) {
        System.out.println("Please enter the values you would like to divide as pairs of two numbers: ");
        // Read pair and store it inside i-th position of a and b arrays 
        System.out.println("Enter first number: ");
        a[i] = sc.nextDouble();
        System.out.println("Enter second number you would like to divide by: ");
        b[i] = sc.nextDouble();
        roundedValues[i] = Math.round(a[i] / b[i]);
    }

我在声明数组时得到的错误是:

不兼容类型:从双精度到整数的有损转换

共有2个答案

石臻
2023-03-14
a[i] and b[i] expect int type, but you supply double to it
Should be 
 for (int i = 0; i < a.length; i++) {

 double n = sc.nextDouble();
   should be changed to:
 int n = sc.nextInt();
龙智
2023-03-14

首先是变量< code>n,定义为< code > double n = sc . next double();是一个双精度值。你不能创建一个长度为double的数组,因为这样你可能会得到半个元素。想象一个4.5元素长的数组!

定义n

int n = sc.nextInt()

int n = (int)sc.next双();

其次,< code>i也是双精度的!这样定义它:

<代码>用于(int i=0;i

这样编译器就知道i是一个整数,不必担心需要在index处检索元素,就像第4.2个元素一样!(它不存在,也不应该存在)

这是固定的代码:
int n = sc.nextInt();

double a[] = new double[n];
double b[] = new double[n];
double roundedValues[] = new double[n];

for (int i = 0; i < a.length; i++) {
    System.out.println("Please enter the values you would like to divide as pairs of two numbers: ");
    // Read pair and store it inside i-th position of a and b arrays 
    System.out.println("Enter first number: ");
    a[i] = sc.nextDouble();
    System.out.println("Enter second number you would like to divide by: ");
    b[i] = sc.nextDouble();
    roundedValues[i] = Math.round(a[i] / b[i]);
}
 类似资料:
  • 问题内容: 在Golang中如何导出返回双精度数组的函数。现在以前似乎可以返回“运行时错误:cgo结果具有Go指针”的方式: 问题答案: 为了安全地将指针存储在C中,它指向的数据必须在C中分配。

  • 我正在尝试编写一个程序来计算您的班级成绩。它考虑了测验,考试,程序等的价值。 我在处理这部分代码时遇到问题。我对为什么我的代码无法编译感到困惑。我正在尝试创建一个双精度数组类型,因为我们为测验分数输入的值必须是双精度值。但是,当我编译程序时,我不断收到此错误,该错误显示“不兼容的类型:从双精度到int的可能有损转换”。我不确定为什么会发生这种情况,并且想知道是否有人可以提供一些见解。谢谢!

  • 问题内容: 我想将一个脚本加载到redis中,该脚本将导出将来执行的脚本将依赖的函数,但是尝试定义全局函数失败,对于全局变量也是如此: 如何定义全局函数和变量? 问题答案: 查看文件scripting.c中的源代码 的doc字符串表示意图是将常见错误通知脚本作者(不使用)。 看来这不是安全功能,所以我们有两个解决方案: 可以删除此保护: 或使用:

  • 问题内容: 好的。我一直在脑海里猛击了大约2个小时,现在想弄清楚为什么世界上告诉我0。或者与此相关的任何其他组合,它只是截断了小数,我只是不知道为什么。 问题答案: 364/365执行整数除法(截断小数点)。 尝试强制其执行浮点除法。 就像是: 由于其中一个操作数不是整数,因此也可以使用。

  • 为什么此代码引发此异常: 线程“main”java.lang.ClassCastException:java.lang.Integer无法强制转换为java.lang.Double 而这个,运行良好: 两者都是尝试将整数转换为双精度,对吗?