提问者:小点点

错误:不兼容类型:从long到int可能有损转换[重复]


我正在尝试解决这个错误。下面的代码是丑陋数字的实现。

    /* Function to get the nth ugly number*/
    long getNthUglyNo(int n) {
        // code here
        long[] ugly=new long[n];
        long next_2=2,next_3=3,next_5=5;
        long i1=0,i2=0,i3=0;
        long next=1;
        ugly[0]=1;
        for(int i=1;i<n;i++)
        {
            next=Math.min(next_2,Math.min(next_3,next_5));
            ugly[i]=next;
            if(next==next_2)
            {
                i1++;
                next_2=ugly[i1]*2;
            }
            if(next==next_3)
            {
                i2++;
                next_3=ugly[i2]*3;
            }
            if(next==next_5)
            {
                i3++;
                next_5=ugly[i3]*5;
            }
        }
        return next;
    }
}

我收到的错误--

            next_2=ugly[i1]*2;

                        ^

java:41:错误:不兼容类型:从long到int可能有损转换

            next_3=ugly[i2]*3;
                        ^

java:46:错误:不兼容类型:从long到int可能有损转换

            next_5=ugly[i3]*5;

我无法解决这个问题。我不知道我的代码有什么问题。


共2个答案

匿名用户

在Java数组中,它们需要一个整数作为数组位置来获取值。出现这些错误是因为i1i2i3变量是一个Long数据类型。要消除这些错误,必须将变量转换为整数类型。

您可以使用:

int position = Integer.parseInt(i1);
next_2 = ugly[position]*2;

匿名用户

数组索引需要int。您正在传递int变量i1、i2等。只需将Array更改为ArrayList。它无需从long手动转换int即可工作。