Нужно сделать так чтобы код от сейфа можно было изменить только в том случае, если сейф уже открыт
Нужно сделать так чтобы код от сейфа можно было изменить только в том случае, если сейф уже открыт. Если сейф закрыт, но я пытаюсь изменить его код, то должна выходить ошибка. Ошибку пусть выдает через sout. То есть хотелось бы без булена решить
public class Safe {
int pin = 1234;
void start() {
change(4321);
open(1234);
}
void close() {
System.out.println("Safe close");
}
void open(int code) {
if (code == pin) {
System.out.println("Welcome");
} else {
System.out.println("Wrong");
}
}
void change(int a) {
pin = a;
}
}
Ответы (2 шт):
Автор решения: KoVadim
→ Ссылка
public class Safe {
int pin = 1234;
boolean isOpen = false;
void start() {
change(4321);
open(1234);
}
void close() {
System.out.println("Safe close");
isOpen = false;
}
void open(int code) {
if (code == pin) {
System.out.println("Welcome");
isOpen = true;
} else {
System.out.println("Wrong");
}
}
void change(int a) {
if (isOpen) {
pin = a;
} else {
System.out.println("It is close");
}
}
}
Автор решения: azlov
→ Ссылка
Вам нужно хранить состояние о том открыт сейф или нет, когда вы пытаетесь изменить код. Самое верное решение, как вам уже подсказали, использовать boolean.
void change(int a) {
if (isOpen) {
pin = a;
} else {
// сообщение
}
}
А там уже ошибку давать через sout или как хотите