无法将double转换为布尔值(noob here)

时间:2011-04-18 12:57:50

标签: java syntax

这是我的算法,我的目标是设置“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,它显示了两个警告。它应该只显示一个。我想。

8 个答案:

答案 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(如果你纠正了==问题)将永远不会成真。