为了账号安全,请及时绑定邮箱和手机立即绑定

将布尔值与 set 和 get 方法一起使用

将布尔值与 set 和 get 方法一起使用

开心每一天1111 2022-12-21 15:15:19
总而言之,我正在为地铁票务系统制作一个程序。我正在为它使用 set 和 get 方法,当涉及到布尔值时(因为我需要验证这个人输入了足够的钱来买票)我应该如何放入主类(它在大脑中定义)使用 set 方法和 if 语句。这里是整个代码的一小部分,其余部分在 github ( https://github.com/alexxei4/subwayticket ) 上。main 基本上是将用于与用户交互的类,而 brain 是定义许多动作的地方。感谢所有帮助,谢谢。 if (Choice1a == 10){            if(subway1.ticketcounter1(true);){                System.out.println("PRINT SUCCESSFUL, COLLECT YOUR TICKET!");            }            if(subway1.ticketcounter1(false);){                System.out.println("INSEFFICIENT FUNDS, PLEASE ADD MORE");            }
查看完整描述

2 回答

?
慕仙森

TA贡献1827条经验 获得超7个赞

这不是您评估布尔值的方式,您只需将该值放在一个if语句中,它将继续 iftrue并拒绝 if ,而且当您可以放置一个块来处理不是的情况时,false也不需要复制该语句:elsetrue


    if(subway1.ticketcounter1) {

        System.out.println("PRINT SUCCESSFUL, COLLECT YOUR TICKET!");

    }

    else {

        System.out.println("INSEFFICIENT FUNDS, PLEASE ADD MORE");

    }

也不要在if语句中包含分号,这是不正确的语法。在此处阅读有关如何使用布尔值的更多信息:https ://codingbat.com/doc/java-if-boolean-logic.html


编辑:


在阅读了你的 Github 代码后,我发现它ticketcounter1确实是一个方法,但它所做的是试图改变它的值,ticketcounter1就像它是一个被引用的对象一样,但是boolean是原始数据类型并且不能被引用,即使它们仍然可以不会工作,因为 Java 是一种按值传递的语言。阅读此处了解更多信息。


public void ticketcounter1(boolean ticketcounter1){

    if (credit1 > total1){

        ticketcounter1 = true;

    }

    else {

        ticketcounter1 = false;

    }

}

public void ticketcounter2(boolean ticketcounter2){

    if (credit2 > total2){

        ticketcounter2 = true;

    }

    else {

        ticketcounter2= false;

    }

就像其他答案所说的那样,您应该返回值boolean而不是尝试更改它:


public boolean ticketcounter1(){

    if (credit1 > total1){

        return true;

    }

    else {

        return false;

    }

}

public boolean ticketcounter2(){

    if (credit2 > total2){

       return true;

    }

    else {

        return false;

    }

}

但总而言之,您的代码在理解该语言的工作原理方面存在根本性缺陷,我建议为初学者挑选一本不错的 Java书籍或做一些介绍性的在线教程。这里是开始您的学习之旅的好地方:https ://docs.oracle.com/javase/tutorial/java/index.html


查看完整回答
反对 回复 2022-12-21
?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

你的代码是这样的


 public void ticketcounter1(boolean ticketcounter1){

    if (credit1 > total1){

        ticketcounter1 = true;

    }

    else {

        ticketcounter1 = false;

    }

}

public void ticketcounter2(boolean ticketcounter2) {

    if (credit2 > total2){

        ticketcounter2 = true;

    }

    else {

        ticketcounter2= false;

    }

}

应该是这样的。而不是使用变量并通过参数传递它。使用吸气剂。除此之外,您的代码将不会运行,因为subway1.ticketcounter1(true)什么都不提供。它只是改变存储在 Brain.java 中的变量。没有信息被发送到 main。


 public boolean ticketcounter1(){

    if (credit1 > total1){

        return true;

    }

    else {

        return false;

    }

}

public boolean ticketcounter2(){

    if (credit2 > total2){

       return true;

    }

    else {

        return false;

    }

}

您可以创建不带参数的函数。我不知道你想做什么?


if (Choice1a == 10){

   if(subway1.ticketcounter1()){

       System.out.println("PRINT SUCCESSFUL, COLLECT YOUR TICKET!");

   }

   if(subway1.ticketcounter1()){

       System.out.println("INSEFFICIENT FUNDS, PLEASE ADD MORE");

   }

}

subway1.ticketcounter1()将给出 true 和 false。不要;在 if 语句条件中使用。;结束声明。查看本指南以了解分号的使用如果您确实想使用;代码应该如下所示


if (Choice1a == 10){

   boolean ticketCounter1 = subway1.ticketcounter1();

   if(ticketCounter1){

      System.out.println("PRINT SUCCESSFUL, COLLECT YOUR TICKET!");

   } else {

      System.out.println("INSEFFICIENT FUNDS, PLEASE ADD MORE");

   }

 }

PS 你不需要两个 ifs if-else 在这种情况下会更好


if(condition) {

// Conditions is true

} else {

// Condition is false

}


查看完整回答
反对 回复 2022-12-21
  • 2 回答
  • 0 关注
  • 135 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信