我正在尝试在Java中实现一个素数筛,以便我可以计算出小于某个最大值的所有素数的总和。我试图使用PrimeSieve的方法并使用布尔值数组来做到这一点,如果数字是复合的,我通过取一个素数并考虑所有小于最大值的整数倍数来使它成为真。
但是当我试着运行这个程序时,总是出现编译错误,我不知道哪里出了问题:
线程“main”java.lang中出现异常。错误:未解决的编译问题:语法错误,请插入“.class”以完成表达式表达式的类型必须是数组类型,但它在标记“i”上解析为类语法错误,删除此标记语法错误,插入“.class”以完成表达式表达式的类型必须是数组类型,但在Problem3.PrimeSieve(Problem3.6ava:11)
public class Problem3 {
public static boolean[] PrimeSieve(int max) {
// automatically all entries are false
boolean[] isPrime = new boolean[max];
// when a number isn't prime make the entry true
for (int i = 0; i < max; i++) {
if (!boolean[i]) {
for (int j = 2i; j < max; j += i) {
boolean[j] = true;
}
} else {}
}
// return the isPrime boolean with all the primes as false
return isPrime;
}
public static void main(String[] args) {
boolean[] Primes = new boolean[100];
Primes = PrimeSieve(100);
int i = 0;
int ans = 0;
while (i < 100) {
if (!Primes[i]) {
ans += i;
i++;
} else {
i++;
}
}
System.out.println(ans);
}
}
任何帮助解决这些错误将不胜感激
你有两个问题:< br> 1)你使用了类型名而不是数组名。< br >因此< code>boolean[i]应改为< code>isPrime[i]。< br> 2) Java不理解< code>2i为“两倍的I”。你需要写那个< code>2*i。
这将使你的代码编译:
for (int i = 0; i < max; i++) {
if (!isPrime[i]) {
for (int j = 2*i; j < max; j += i) {
isPrime[j] = true;
}
} else {} // By the way - This is really not necessary
}
问题内容: Python实际包含布尔值吗?我知道您可以做到: 但是我相当学究,喜欢在Java中看到布尔值。例如: Python中是否有布尔值之类的东西?我似乎在文档中找不到类似的内容。 问题答案: [编辑] 有关更多信息:http : //docs.python.org/library/functions.html#bool 您的代码也可以工作,因为在需要时会转换为。实际上,Python很长一段时
我被一件简单的事情困住了。我有一个名为“tags”的布尔值数组能够通过布尔值访问数组的每个元素对我来说很重要: 我传入trackTags数组并将布尔值赋给它(比如说[true,true,true,false])。因此,当我调用trackTags[0]时,我得到了“true”但是,当我打印“Energy”(能量)时,它应该与trackTags(0)相同,该值始终为false。我知道booleans
问题内容: 哪种列类型最适合在MySQL数据库中使用布尔值?我用,但我的同事用。 问题答案: 这些数据类型是同义词。
问题内容: 好的,我在代码中实现了这个SO问题:随机返回True或False 但是,我的行为很奇怪:我需要同时运行十个实例,每个实例每次运行仅返回一次true或false。令人惊讶的是,无论我做什么,每次我得到 有什么方法可以改善这种方法,以便我至少有大约50%的机会得到吗? 为了使它更易于理解:我将应用程序构建为JAR文件,然后通过批处理命令运行 程序的内容-使其尽可能简单: 如果我打开10个命
但是这个代码不起作用。编译器说 我在试图理解代码的问题是什么。我认为将返回一个布尔值流,我可以通过收集这些值。
问题内容: 在Java中将a转换boolean为an 的最常用方法是什么int? 问题答案: ^^ PS : true = 1 and false = 0