Java:从long到int的可能有损转换

Java:从long到int的可能有损转换,java,Java,每次我尝试执行这段代码时,它都会告诉我从long到int的转换是有损的。据我所知,这段代码中没有一个int。我唯一怀疑的是其中一个函数只返回int。如果是,我如何将其转换为long 还有,有人在最后两行中看到任何错误吗?我正在尝试将一个数组转换为一个列表,但我不确定这是否可行 是的,我知道这里还有很多其他的问题,我只是特别关注这个问题 import java.util.List; class SumDigPower { public static List<Long> sumDigP

每次我尝试执行这段代码时,它都会告诉我从long到int的转换是有损的。据我所知,这段代码中没有一个int。我唯一怀疑的是其中一个函数只返回int。如果是,我如何将其转换为long

还有,有人在最后两行中看到任何错误吗?我正在尝试将一个数组转换为一个列表,但我不确定这是否可行

是的,我知道这里还有很多其他的问题,我只是特别关注这个问题

import java.util.List;
class SumDigPower {
public static List<Long> sumDigPow(long a, long b) {
  long solution = 0;
  long solutionCounter = 0;
  long[] solutionArray;
  long[] digitArray;
  for (long i = a; i < b; i++) { 
    String strLong = Long.toString(i);
    String[] strArray = strLong.split("");
    for (long j = 0; j < strArray.length; j++) {
      digitArray[j] = Long.parseLong(strArray[j]);
    } for (long k = 0; k < digitArray.length; k++) {
      solution += Math.pow((k+1), digitArray[k]);
    } if (solution == i) {
      solutionArray[solutionCounter] = solution;
      solution = 0;
      solutionCounter += 1;
    }
  } List<Long> solutionList = Arrays.asList(solutionArray);
  return solutionList;
}
}
import java.util.List;
类SumDigPower{
公共静态列表sumDigPow(长a、长b){
长解=0;
长解计数器=0;
长线;
长[]数字阵列;
对于(长i=a;i
有效数组索引为
int
(非
long
)。如果不初始化数组,就不能使用它(您需要知道数组的长度,因为Java数组是固定的)。接下来,您需要一个
列表
,并尝试构建一个数组(同样,您不能这样做-只需使用
列表
,您可以消除
解决方案计数器
)。像

公共静态列表sumDigPow(长a、长b){
长解=0;
List al=新的ArrayList();
用于(长i=a;i
您不能从长字符串数组中选取值。请尝试强制转换为int:

long myLong = 0;
int myInt = (int) i;
然后将其作为索引放入数组中:

myStringArray[myInt]

此代码不应编译。数组索引应该是一个int值,并且使用long。例如:
digitArray[j]=
其中
j
被声明为
long
。您的代码有很多问题,您要问的问题很简单-有效数组索引是
int
(不是
long
)。即使我将这些索引更改为int,问题仍然存在于solutionArray[solutionCounter]=溶液;
myStringArray[myInt]