首页 > 解决方案 > 错误:不兼容的类型:从 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;
    }
}

我得到的错误-> prog.java:36:错误:不兼容的类型:从 long 到 int 的可能有损转换

            next_2=ugly[i1]*2;

                        ^

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

            next_3=ugly[i2]*3;
                        ^

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

            next_5=ugly[i3]*5;

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

标签: java

解决方案


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

您可以使用:

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

推荐阅读