我只是想写一个小程序,列出10到1000之间的所有素数,但它总是报告错误(primefinder.main中长度为0的索引0超出了范围),我不确定哪里出错了。
class PrimeFinder {
static boolean isPrime(int n) {
for (int x=2; x<=(int)Math.sqrt(n); x++) {
if (n%x == 0) {
return false;
}
}
return true;
}
public static void main(String[] args) {
if (args.length > 0) {
System.out.println("usage: java PrimeFinder <max-range>");
return;
}
int maxRange = Integer.parseInt(args[0]);
for (int i=2; i > 10 && i < 1000; i++) {
if (isPrime(i)) {
System.out.println(i);
}
}
}
}
1条答案
按热度按时间e5nqia271#
根据,
您不希望任何用户输入程序。如果有任何用户输入,那么您的程序将退出并在控制台中打印日志。如果没有用户输入,则流程将继续,然后使用该行,
你在评估
args[]
实际上是空的。因此,它将抛出IndexOutOfBound
错误如果您不需要对用户输入执行任何验证(至少您没有对
maxRange
在守则中),,或者纠正其中的逻辑。
前任:
主回路中的for回路应进行如下修正:,