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