java - 错误:不兼容的类型:从 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 数组上,他们需要一个整数作为数组位置来获取其中的值。出现这些错误是因为您的i1
、i2
和i3
变量是一种Long
数据类型。要消除这些错误,您必须将变量转换为整数类型。
您可以使用:
int position = Integer.parseInt(i1);
next_2 = ugly[position]*2;
推荐阅读
- rack - unicorn-worker-killer- 如果多个 Unicorn 工人同时被杀,为什么会有问题?
- macos - tableView(tableView, viewFor:,: Int) 奇怪的行为
- c++ - 当前实例化成员和未知特化成员的名称查找
- node.js - Google node sdk Calendar freebusy查询不返回私人日历的时间
- python - 如何在Python中的字典项列表中按值删除重复的字典项
- vue.js - 根据计算属性的结果显示不同颜色的文本?
- nginx - X-Forwarded-For 标头不存储真实 ip 但具有 nginx ip
- javascript - 类语法中的“get”方法返回未定义
- r - 如何使用 levelplot (LatticeExtra) 在单个地图中绘制其他字段?
- android - 使用 OneTimeWorkRequest 暂停 MediaBrowserServiceCompat 音频