我试图用循环中的double值填充我的double数组,但是我收到以下错误: 不兼容的类型:可能从double到int的有损转换
这是我的代码:
public class ThreadGraph extends Thread {
//initializing the variables
public static double x1=0.0; //left endpoint of interval
public double x2=1.0; //right endpoint of interval
public double y=4/(1+Math.pow(x1, 2)); //Deriving the two parallel trapezium lengths
public int n=1000000; //The Number of trapezia, 1000000 gives greater accuracy for deriving pi
public double h=(x2-x1)/n; //Each trapezium's constant height
public double trapeziaAreasSum=0; //This variable will store the sum of the areas of the trapezia
static double[]valuesOfx1=new double[1000000];
static double[]valuesOfy=new double[1000000];
//this method divides the area under the curve into trapezia
public void run(){
for(double x1=0.0; x1<1.0; x1=x1+0.000001, y=4/(1+Math.pow(x1,2))){
valuesOfx1[x1] = x1; //ERROR OCCURS HERE
valuesOfy[y] = y; //ERROR OCCURS HERE
}}}
可能是什么问题?因为循环的输出是double的形式,我尝试将这些结果添加到double数组但我得到一个int错误:不兼容的类型:可能有损转换从double到int
答案 0 :(得分:2)
您正在尝试为数组的0.000001位置指定值。那不会飞。数组/列表元素的位置是完整的整数 - 0,1,2,3等
double
数组意味着它是一个值为double
类型的数组,而不是这些值的半数可以是双倍。
答案 1 :(得分:0)
你不能拥有一个数组的非整数索引(所以就像foo [0.25]没有意义)。您需要使用允许双打(对象的大写D)作为键的数据类型(如果迭代顺序很重要,则为LinkedHashMap)或类似。或者你使用int作为索引并除以图的双X值(这将更节省空间)。你的电话。