这是我的算法,我的目标是设置“if语句”。看看:
import java.util.Scanner;
public class apple {
public static void main(String args[]) {
System.out.println("This is occurring right now");
for (float ind = 0; ind <= 0.50; ind += 0.1) {
System.out.println(ind);
}
double find;
if (find = 0.25);
在最后一行,它说“我不能将double转换为boolean” 我该怎么办? (我是一个没有时间完成这项任务的人,就像今天一样)
好的,我看了你所有的提示并想出了:
import java.util.Scanner;
public class apple {
public static void main(String args[]) {
System.out.println("this is occouring right now");
for (float ind = 0; ind <= 0.50; ind += 0.1) {
System.out.println(ind);
}
double find = 0;
if (find == 0.25) {
System.out.println("Group A has been Warned");
} else if (find == 0.30) {
System.out.println("Group A and B need to shut down");
} else if (find == 0.40) {
System.out.println("All Groups (A, B and C) need to shut down");
}
}
}
我认为通过在那里设置if
语句,它会在运行时显示警告。
如何再次拨打System.out.println()
内输入的内容?
我一直在打印出来......现在怎么样?
微调
import java.util.Scanner;
public class apple {
public static void main(String args []) {
Scanner dic = new Scanner(System.in);
System.out.println("type the rate: ");
for (double ind=dic.nextDouble(); ind <=0.50; ind+=0.1){
// include my variables
if (ind == 0.2){
System.out.println("Group A has been Warned");
}else if (ind == 0.3){
System.out.println("Group A and B need to shut down");
}else if (ind == 0.4){
System.out.println("All Groups (A, B and C) need to shut down");
}
}
}
}
我想我正朝着正确的方向前进。唐诺。事情是,我输入了0.2,它显示了两个警告。它应该只显示一个。我想。
答案 0 :(得分:7)
if (find == 0.25)
- 比较是通过==
完成的,而不是=
,用于分配。
错误消息表示您正在尝试为布尔值分配double值(这是不可能的)
顺便说一句,由于表示双精度的方式,您的代码可能无法正常工作。如果您想进行精确的双重计算,请使用BigDecimal
或使用int
s(您的双精度乘以10或100)
答案 1 :(得分:6)
使用=
进行分配,使用==
进行相等检查。
稍后你会发现浮点数不能按预期工作的事实......
答案 2 :(得分:3)
If
语句需要括号内的布尔值
您可以查看this link
import java.util.Scanner;
public class apple {
public static void main(String args []) {
System.out.println("this is occurring right now");
for (float ind=0; ind <=0.50; ind+=0.1){
System.out.println(ind);
}
double find;
if (find == 0.25);// when it's "=" it sets find as 0.25, when it is "==" it compares the two values
第二版:如果你只想要一个工作,你应该在break
语句的末尾使用if
,这样做是在处理满足你的ind条件的if语句之后它会离开循环。
import java.util.Scanner;
public class apple {
public static void main(String args []) {
Scanner dic = new Scanner(System.in);
System.out.println("type the rate: ");
for (double ind=dic.nextDouble(); ind <=0.50; ind+=0.1){
// include my variables
if (ind == 0.2){
System.out.println("Group A has been Warned");
break;
}
else if (ind == 0.3){
System.out.println("Group A and B need to shut down");
break;
}
else if (ind == 0.4){
System.out.println("All Groups (A, B and C) need to shut down");
break;
}
}
}
}
答案 3 :(得分:2)
通过==
比较小数字并不总是好的。数字在计算机中的表示方式与我们编写的方式不同,因此0.2 + 0.1
可能与0.3
略有不同。而不是
if (ind == 0.2){
你最好使用像
这样的东西if (Math.abs(ind - 0.2) < 0.001){
答案 4 :(得分:1)
Bozho和Joachim都回答了这个问题,我只想在java中添加if
需要布尔表达式,然后给它double
- find
。 (find = 0.25)
是要查找的任务,但不是评估的一部分。这就是你得到的原因
它无法将double转换为布尔值
答案 5 :(得分:1)
除了其他人说的话,请注意if语句末尾的分号。
这段代码:
if (find == 0.25);
System.out.println("Hello");
将始终打印Hello。
然而:
if (find == 0.25)
System.out.println("Hello");
如果满足if语句,则只打印Hello。
答案 6 :(得分:1)
if语句使用布尔值或表达式使用运算符,如==,!=,&gt;,&lt;,&gt; =和&lt; =。
我不知道你对你的代码有什么期望,但你的“find”变量没有价值,你想使用“ind”,它会超出范围。
你的代码无法在任何地方拥有0.25
答案 7 :(得分:1)
double find;
if (find = 0.25);
你永远不会分配任何东西来寻找,所以if(如果你纠正了==问题)将永远不会成真。