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

时间:2019-05-28 17:32:52

标签: java oop object get set

总而言之,我正在为地铁票务系统编写一个程序。而且我正在使用set和get方法,当涉及到布尔值时(因为我需要验证该人是否输入了足够的钱来购票),我应该如何输入主类(在大脑中定义)使用set方法和if语句。这只是整个代码的一小部分,其余代码位于github(https://github.com/alexxei4/subwayticket)上。主要是用于与用户交互的类,大脑是定义许多动作的地方。感谢所有帮助,谢谢。

 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 个答案:

答案 0 :(得分:1)

这不是评估布尔值的方式,您只需将值放在if语句中,如果true将继续执行,如果false则拒绝,同样也不需要仅在放置else块来处理非true以外的情况时,复制该语句:

    if(subway1.ticketcounter1) {
        System.out.println("PRINT SUCCESSFUL, COLLECT YOUR TICKET!");
    }
    else {
        System.out.println("INSEFFICIENT FUNDS, PLEASE ADD MORE");
    }

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

编辑:

在阅读完Github代码后,我发现ticketcounter1确实是一种方法,但是它正在尝试更改ticketcounter1的值,就像它是被引用的对象一样,但是boolean是原始数据类型,无法被引用,即使它们仍然不能使用,因为Java是按值传递语言。阅读here以获得更多信息。

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

答案 1 :(得分:0)

您的代码就是这样

 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语句条件中使用;;结束语句。选中此guide以了解分号的使用方法如果您确实想使用;,则代码应如下所示

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");
   }
 }

P.S在这种情况下,您不需要两个ifs if-else会更好

if(condition) {
// Conditions is true
} else {
// Condition is false
}