关于java:将String转换为boolean

Convert a String to boolean

本问题已经有最佳答案,请猛点这里访问。

我需要用Java代码来解决这个练习:

我们有一个猴子和一个布尔参数asmile,我们需要知道猴子是否在笑,如果它是"我们在特洛布",如果它不是"我们是好的"。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import java.util.Scanner;


public class taxi {

public static void main(String[] args) {

    boolean aSmile;


    Scanner scan = new Scanner(System.in);
    System.out.println("Is monkey A smiling?");
    String answer = scan.nextLine();
    if (answer.equalsIgnoreCase("yes")){
         aSmile = true;
    }
    else if (answer.equalsIgnoreCase("no")){
        aSmile = false;
    }
    else {
        System.out.println("Sorry, write a correct answer");
    }


    if(aSmile = true){
        System.out.println("We are in trouble");
    }

    else if (aSmile = false){
        System.out.println("We are good!");
    }
   }
}

问题是,无论我在控制台上写什么,我总是得到"我们在特洛布"。


1
2
3
if(aSmile = true){ //Look here.
    System.out.println("We are in trouble");
}

您正在将值true分配给变量asmile。

替换为:

1
2
if(aSmile) { //Or if(aSmile == true) {
  ...

您错误地使用了条件运算符。应该是这样的

1
2
3
    if(aSmile){

     }


您正在使用赋值运算符,然后检查布尔值。

1
2
3
if(aSmile = true){
        System.out.println("We are in trouble");
    }

aSmile将始终为真,因为您将它指定为true,然后检查它是否为true。您必须使用==运算符,或者在这种情况下,只需

1
2
if(aSmile){ // means if aSmile is true
}