Это не то, как вы оцениваете логические значения, вы просто помещаете значение в оператор 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
, это неверный синтаксис. Узнайте больше о том, как использовать логические значения здесь: https://codingbat.com/doc/java-if-boolean-logic.html
EDIT:
После прочтения вашего кода на 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