import java.math.BigInteger;
public class Classes{
static int i; //"i" is initialized
static int x = 200; //FYI, x is the upper limit for primes to be found (ex, in this case, 0 - 200)
public static void main(String[] args) {
for(i = 0; i < x;){ //"i" is assigned the value of 0
BigInteger one = BigInteger.valueOf(i); // The following lines find the prime(s)
one = one.nextProbablePrime(); // Order by which primes are found - int > BigInteger > int
i = one.intValue(); //'i" is re-assigned the a value
if(i >= x){
System.exit(i);
}
switch(i){
case i < 100: // ERROR HERE, "Type mismatch: cannot convert from boolean to int"
hex();
break;
case i > 100: // ERROR HERE, "Type mismatch: cannot convert from boolean to int"
baseTen();
break;
}
}
}
static void hex(){ //Probably unimportant to solving the problem, but this is used to convert to hex / print
String bla = Integer.toHexString(i);
System.out.println(bla);
}
static void baseTen(){ //Probably unimportant to solving the problem, but this is used print
System.out.println(i);
}
}
各位大家好,我希望你们都做得很好。这是我第一次使用Stack Overflow,所以我提前为我可能犯的任何错误道歉。那么,让我们来吧!我在学习Java时编写了上面的代码作为练习片,并且自从练习和使用Java以来一直在使用它。该计划旨在寻找素数,并已经工作了一段时间。自从我决定尝试切换语句以来,我一直遇到问题。当我去运行代码时,Eclipse IDE会说“类型不匹配:无法从布尔值转换为int”,因此我的程序拒绝运行。我已经用我投射类型的点来评论我的代码,并且无处可选地将“i”转换为“boolean”类型。如果您对发生此问题的原因有任何疑问,请告诉我。如果您需要任何其他信息,请询问!谢谢!
答案 0 :(得分:5)
switch(i){
只能为每种情况切换i
的单个值。
请改用以下内容:
if(i < 100){
hex();
}
if(i > 100){
baseTen();
}
我也会处理i==100
案件。这对读者来说只是一个简单的练习。
对于switch
,您只能Enum
,或者如果您有不同的int
值,您只关心单值案例,而不是范围。
答案 1 :(得分:1)
switch
是一个用于针对各种可能性测试一个变量的元素,如下所示:
switch (a) {
case 1:
// this runs if a == 1
break;
case 2:
// this runs if a == 2
// NOTE the lack of break
case 3:
// this runs if a == 2 or a == 3
break;
default:
// this runs if a is none of the above
}
请注意,switch子句(a
)中的类型应与case子句中的类型匹配(1
)。案件条款不能是任意的布尔值。
当然,如果要准确指定条件是什么,可以使用“if / else”块,如下所示:
if (a == 1) {
//...
} else if (a == 2) {
//...
} else if (a == 3) {
//...
} else {
// runs if none of the above were true
}
后一个例子更接近你想要的;而不是使用==
测试每个,而是直接评估if
之后的每个布尔表达式。你的看起来会更像这样:
if (i < 100) {
hex();
} else if (i > 100) {
baseTen();
}
当然,他们可以保留两个单独的条款,但因为它们是相互排斥的,所以仍然使用else
是有意义的。您还没有考虑i == 100
的情况,这可能需要将<
更改为<=
或>
更改为>=
。
答案 2 :(得分:0)
switch
语句和大多数其他语言都适用于常量,而不是条件。所以,你可以写
switch (i)
{
case 1:
do_something();
break;
case 2:
do_something_else();
break;
default:
third_option();
}
但是,您的条件涉及比较而非条件,因此在Java中它们需要if语句:
if (i < 100)
hex();
else if (i > 100)
baseTen();
您可以找到有关switch语句here的详尽说明。
答案 3 :(得分:0)
欢迎来到SO。如果您阅读Java文档,则说明:
The type of the Expression must be char, byte, short, int, Character, Byte, Short, Integer, or an enum type, or a compile-time error occurs.
请参阅此处的参考:Java Switch