【问题标题】:Printing a boolean boolean value between classes在类之间打印一个布尔值
【发布时间】:2013-03-03 14:10:26
【问题描述】:

我对 Java 比较陌生。我得到了一个任务,我必须输出一个显示其属性的类的对象并打开它。该对象是一个“风扇”,我可以从我创建的 FAB 类中打印它的所有属性,除了打开它。 这是我的一些代码

public class Fan {
private boolean on = false;

public Fan ( int newSpeed, boolean newOn, double newRadius, String newColor ) {

            setSpeed(newSpeed);    
            setRadius(newRadius);
            setColor(newColor);
            }

            public boolean isOn () { 
            return true;

            }
           public void setOn ( boolean newOn ) {
                    if (on) {
                        on=newOn;


                    } 
                    }
         public String toString ( ) {                
            {
               if (on)
               {
                  return "Fan is Turned on";
               }
               else
               {
                  return "Fan is Turned off";
               }
                  }
                    }

这是我的粉丝课对象

public class TestApplication {
public static void main (String[] args) {

    Fan testfan1 = new Fan(5, false, 10, "blue");

    System.out.println(testfan1.getSpeed() + "   " + testfan1.getColor() + " " 
            + testfan1.getRadius() + " " + testfan1.isOn());


 }
}

尝试了很多方法,但我得到输出“真”而不是风扇打开

【问题讨论】:

  • 您也永远不会将 on 设置为来自构造函数的值,它只是保持默认的 false
  • 我做了,但仍然得到假/真输出。风扇打开时不是我想要的打印声明
  • 如果你想要一个String 作为输出,那么isOn() 需要返回一个String 而不是boolean

标签: java class object boolean boolean-operations


【解决方案1】:

if (on = true) {

我想你是说

if (on == true) {

简化为

if (on) {

验证码:尽管看起来像 ==,但将 = 用作赋值而不是 := 的语言,在 if 正文中使用 = 并不是警告

编辑:另外:

        public boolean isOn () { 
        return true;

        }

为什么不return on

还有:

如果您在设置变量时打印“风扇已打开”“风扇已关闭”等,那么当您 1) 通过 isOn 获取变量 2) 连接一个字符串以发送到 println 时,就不会发生这种情况。

编辑

public string ToString()
{
   if (on)
   {
      return "Fan is Turned on";
   }
   else
   {
      return "Fan is Turned off";
   }
}

System.out.println(testfan1);

【讨论】:

  • 其实应该只是if(on){ ... } 不需要测试== 是真还是假,因为作为布尔值已经是真假了。
  • 所以我无法获得打印输出?我现在得到的都是假的。不是打印语句。 :(
  • @Adnan 创建一个返回要打印的字符串的方法。不要从实例方法中打印。
  • 好吧,假设这是代码private String text = "Fan is turned on"; 我如何将它与boolean on = false 链接?这是我第一次处理Java中的类,所以请帮忙
  • 谢谢,我做到了,查看主代码,完全按照你的做法完成,但输出仍然是“假”! :( toString 需要在主 Fan 类中对吧?而且你没有告诉我 Set on 该怎么办?
【解决方案2】:

我看到了一些错误:

您正在使用= 运算符在您的if 语句中进行比较。 = 运算符是 Java 中的赋值运算符。使用==进行比较。

if (on == true) 

如果您要比较的是布尔值(这里就是这种情况),只需提供布尔值:

if (on)

另外,在你的isOn 方法中,你总是返回true,我认为你的意思是返回on

【讨论】:

  • 是的!谢谢,但仍然没有得到“风扇已打开”。这是我的代码 ** public boolean isOn () { return on; } public void setOn ( boolean newOn ) { if (on) { on = newOn; System.out.println("风扇已打开"); } }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-02
  • 1970-01-01
  • 1970-01-01
  • 2022-07-26
  • 2013-11-07
  • 2019-07-31
  • 2011-12-07
相关资源
最近更新 更多