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

Java 尝试创建双变量类型的数组时出错,java,arrays,loops,double,Java,Arrays,Loops,Double,我正在尝试创建一个程序,它从用户那里获取双倍的值,并将它们存储在数组中,然后再对它们进行分割和四舍五入。但是,我在尝试创建双数组时不断收到错误 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;

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

 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]);
    }
double n=sc.nextDouble();
双a[]=新双[n];
双b[]=新的双[n];
双舍入值[]=新的双精度[n];
for(双i=0;i
我在声明数组时遇到的错误是:

不兼容类型:可能从double转换为int


首先,变量
n
,定义为
double n=sc.nextDouble()是双精度的。不能创建长度为两倍的数组,因为这样可能会得到半个元素。想象一个4.5个元素长的数组

定义
n
如下所示:

int n=sc.nextInt()


intn=(int)sc.nextDouble()

其次,
i
也是一个双精度!定义如下:

for(inti=0;i

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

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

double a[]=新的double[n];
双b[]=新的双[n];
双舍入值[]=新的双精度[n];
for(int i=0;i
首先,变量
n
,定义为
double n=sc.nextDouble();
是一个double。不能创建长度为double的数组,因为这样可能会得到半个元素。想象一个4.5个元素长的数组

定义
n
如下所示:

int n=sc.nextInt()


int n=(int)sc.nextDouble();

其次,
i
也是一个double!定义如下:

for(inti=0;i

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

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

double a[]=新的double[n];
双b[]=新的双[n];
双舍入值[]=新的双精度[n];
for(int i=0;i
元素数为双倍的数组意味着什么?我从未见过元素数为3.2734的数组。为什么要使用双倍作为计数器(I)?使用int。我已将循环中的控制变量更改为int,这解决了该问题,但我在声明数组的行上仍会遇到相同的错误。您能帮助我理解原因吗?我希望在我创建的数组中存储十进制数的值。谢谢您的评论。您仍在创建[]b[]和“双精度”元素数。括号中的任何内容都必须是int。好的。我想在我创建的数组中存储十进制数的值,因此我尝试将数组初始化为double。我想我知道哪里出了问题,我认为int是可以存储在t中的值的类型的原因数组。有没有一种方法可以在数组中存储double类型的值?元素数为两倍的数组意味着什么?我从未见过元素数为3.2734的数组。为什么要使用double作为计数器(I)?使用int。我已将循环中的控制变量更改为int,这解决了该问题,但我在声明数组的行上仍会遇到相同的错误。您能帮助我理解原因吗?我希望在我创建的数组中存储十进制数的值。谢谢您的评论。您仍在创建[]b[]和“双精度”元素数。括号中的任何内容都必须是int。好的。我想在我创建的数组中存储十进制数的值,因此我尝试将数组初始化为double。我想我知道哪里出了问题,我认为int是可以存储在t中的值的类型的原因数组。有什么方法可以在数组中存储double类型的值吗?例外情况是OP使用double表示n,并试图将其声明为数组声明中的元素数。我已将循环中的控制变量更改为int,这就解决了这一问题
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();
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]);
}