if和else语句

if和else语句

问题描述:

我试图执行toString方法,并且toString的输出取决于boolean变量。以下是我的课程和主要内容。if和else语句

public class Cell { 

    public int addSpaces; 
    boolean isEmpty; 
    boolean isChute; 
    boolean isLadder; 

    public Cell() { 
     addSpaces = 10; //I initialized addSpaces to 10 for testing purpose 
    } 

    public boolean isChute() { //first boolean method 
     if (addSpaces == -10) { 
      return true; 
     } else { 
      return false; 
     } 
    } 

    public boolean isLadder() {//second boolean method 
     if (addSpaces == 10) { 
      return true; 
     } else { 
      return false; 
     } 
    } 

    public boolean isEmpty() { //third boolean method 
     if (addSpaces == 0) { 
      return true; 
     } else { 
      return false; 
     } 
    } 

    public String toString() { 
     String print; 
     if (isChute = true) //if isChute is true return true. 
     { 
      print = "C10";  // toString output = "C10" 
     } else if (isLadder = true) // if isLadder is true return true 
     { 
      print = "L10";   // toString output == "L10" 
     } else { 
      print = "---"; // else toString print output = "---" 
     } 
     return print; 
    } 

    public static void main(String[] arg) { 
     Cell s = new Cell(); 

     System.out.println(s.addSpaces); 
     System.out.println(s); 
    } 
} 

不管toString输入状态的,我基本上得到了相同的输出“C10”。

有人能告诉我我做错了什么吗?

我是新来这个网站,所以我很感激任何反馈,以备将来参考。谢谢。

+1

你应该有==内,如果不= – rajesh 2013-03-15 05:18:51

+0

您作为使用赋值运算符=进行比较,因此只有第一个条件执行所有的时间。使用== – 2013-03-15 05:19:00

+0

谢谢@rajesh&Sudhanshu:是的,我尝试使用if(==)而不是if(=),但输出为“---”。通过在if语句中使用==,它会跳过if和else if语句并转到else语句。 – Phong 2013-03-15 05:25:08

你已经掉进语言 “陷阱”

这一个...

if(isChute = true) //if isChute is true return true. 
    print = "C10";  // toString output = "C10" 
else if (isLadder = true) // if isLadder is true return true 
    print = "L10";   // toString output == "L10" 
else 
    print = "---" 

实际分配trueisChute。您应该使用===

更新

一个更好的办法是......

if(isChute) //if isChute is true return true. 
    print = "C10";  // toString output = "C10" 
else if (isLadder) // if isLadder is true return true 
    print = "L10";   // toString output == "L10" 
else 
    print = "---" 

如果只有两种状态,该对象可以是(一个滑道或梯子),你可以简单地使用

if(isChute) //if isChute is true return true. 
    print = "C10";  // toString output = "C10" 
else print = "L10";   // toString output == "L10" 

如果它可以有多于2个状态,那么我会改为使用enum type

+0

我这个方法的第一意图是检查布尔值是否为真,并且toString的输出取决于这些情况。我的方法错了吗?谢谢。 – Phong 2013-03-15 05:33:54

+0

不,你的方法没有错,但你试图确定状态的方式是 – MadProgrammer 2013-03-15 05:35:18

+0

我试过实现你的第一个方法,输出是“---”。这似乎是if和else if语句是错误的。我尝试了一种不同的方法来检查我的布尔方法。的System.out.println(s.isLadder); System.out.println(s.isChute); System.out.println(s.isEmpty);并且输出是错误的,错误的,错误的。这是否会成为影响if语句的原因?谢谢 – Phong 2013-03-15 05:43:57

isChute被分配为true。所以“C10”一直由toString()返回。 改变它

if(isChute){ 
    ... 
}else if(isLadder){ 
    ... 
}else{ 
    .. 
} 
+0

谢谢Nandakisshore,但如果我不把==或=放在if语句中,只有否则如果会得到执行。 – Phong 2013-03-15 05:47:26

+0

您已命名与该变量相同的功能。 所以,如果你想要函数返回值作为表达式值,那么isChute()必须用在if语句的表达式字段中。 – Kishore 2013-03-15 05:54:31