Java - Long List ERROR : incompatible types
Java - Long List ERROR : incompatible types
我正在编写这段使用大数字的代码:
import java.math.*;
import java.util.*;
import java.lang.*;
public class main {
public static void main(String[] args){
double max = 1e+15;
List<Integer> sum = new ArrayList<Integer>();
sum.add(1);
long aux = 0;
for(long i = 1;i<max;i++){
sum.add(sum.get(i-1)+scomponi(sum.get(i-1),aux));
if(i+1==1e+7 || i+1==1e+8 || i+1==1e+9 || i+1 == 1e+10 || i+1 == 1e+10 || i+1==1e+11 || i+1==1e+12 || i+1==1e+13 || i+1==1e+14)
System.out.println(i+1+"-imo -> "+sum.get(i));
}
System.out.println(sum.get(sum.size()-1));
}
public static Long scomponi(Long num,Long tot) {
while (num > 0) {
Long digit = num % 10;
tot += digit;
num /= 10;
}
return tot;
}
}
但我找不到解决此错误的方法:
这是什么意思?我不太擅长 java,但是这么简单的代码,有什么问题吗?
Java 中的列表是 int
索引的,正如您在 List.get()
的 javadoc 中看到的那样,您正试图通过 long
获取元素指数.
如果你需要大于整数范围的列表,你需要另一个支持它的数据结构,你不能使用List
。
正如janos所说,你不能在列表中使用长索引。但是从你的代码来看,你不需要列表,你只使用最后计算的值。
public static void main(String[] args){
double max = 1e+15;
long last = 1;
long aux = 0;
for(long i = 1;i<max;i++){
last += scomponi(last,aux);
if(i+1==1e+7 || i+1==1e+8 || i+1==1e+9 || i+1 == 1e+10 || i+1 == 1e+10 || i+1==1e+11 || i+1==1e+12 || i+1==1e+13 || i+1==1e+14)
System.out.println(i+1+"-imo -> "+last);
}
System.out.println(last);
}
如果你真的想保留每个值,你可以将它们存储到一个文件中,但据我所知,你不需要那些。
当然,循环需要一些时间;)
我正在编写这段使用大数字的代码:
import java.math.*;
import java.util.*;
import java.lang.*;
public class main {
public static void main(String[] args){
double max = 1e+15;
List<Integer> sum = new ArrayList<Integer>();
sum.add(1);
long aux = 0;
for(long i = 1;i<max;i++){
sum.add(sum.get(i-1)+scomponi(sum.get(i-1),aux));
if(i+1==1e+7 || i+1==1e+8 || i+1==1e+9 || i+1 == 1e+10 || i+1 == 1e+10 || i+1==1e+11 || i+1==1e+12 || i+1==1e+13 || i+1==1e+14)
System.out.println(i+1+"-imo -> "+sum.get(i));
}
System.out.println(sum.get(sum.size()-1));
}
public static Long scomponi(Long num,Long tot) {
while (num > 0) {
Long digit = num % 10;
tot += digit;
num /= 10;
}
return tot;
}
}
但我找不到解决此错误的方法:
这是什么意思?我不太擅长 java,但是这么简单的代码,有什么问题吗?
Java 中的列表是 int
索引的,正如您在 List.get()
的 javadoc 中看到的那样,您正试图通过 long
获取元素指数.
如果你需要大于整数范围的列表,你需要另一个支持它的数据结构,你不能使用List
。
正如janos所说,你不能在列表中使用长索引。但是从你的代码来看,你不需要列表,你只使用最后计算的值。
public static void main(String[] args){
double max = 1e+15;
long last = 1;
long aux = 0;
for(long i = 1;i<max;i++){
last += scomponi(last,aux);
if(i+1==1e+7 || i+1==1e+8 || i+1==1e+9 || i+1 == 1e+10 || i+1 == 1e+10 || i+1==1e+11 || i+1==1e+12 || i+1==1e+13 || i+1==1e+14)
System.out.println(i+1+"-imo -> "+last);
}
System.out.println(last);
}
如果你真的想保留每个值,你可以将它们存储到一个文件中,但据我所知,你不需要那些。
当然,循环需要一些时间;)