Есть два класса: Main
и Cycles
. Из класса Cycles
методом get()
должно передаваться значение переменной SecSycles
в класс Main
в переменную MainCycle
, но её значение почему-то всегда остаётся равным 1
. Вот сама часть кода:
public class Cycles {
public int SecCycle = 1;
public float getSecCycle() {
return this.SecCycle;
}
}
public class Main {
float MainCycle = 1;
Cycles YesNo = new Cycles();
MainCycle = YesNo.getSecCycle();
}
Дело в том, что у меня уже был аналогичный рабочий код, но сейчас мне понадобилось добавить еще один класс, и это значение сначала передается в еще один класс, а потом в Main
. Может, проблема связана с этим?
Дополнено: полный код. В классе Cycles
переменной SecCycle
должно присваиваться значение 2
, которое потом передается в класс Money
, а из него - в Main
. Знаю, что это относительно громоздко и искренне надеюсь на то, что код будет понятен.
public class Main {
public static void main(String[] args) {
float MainCycle = 1;
Scanner sc = new Scanner(System.in);
Cycles YesNo = new Cycles();
Money Balance = new Money();
Card Visa = new Card();
Visa.Insert();
Visa.PIN();
do {
System.out.println("Выберите действие:\n1 - просмотр баланса карты;\n2 - снять средства со счёта;\n3 - пополнить счёт.");
int choose = sc.nextInt();
if (choose == 1) {
Balance.Check();
MainCycle = YesNo.getSecCycle();
}
else if (choose == 2) {
Balance.Withdraw();
MainCycle = YesNo.getSecCycle();
}
else if (choose == 3) {
Balance.Deposit();
MainCycle = YesNo.getSecCycle();
}
else System.out.println("Ошибка. Введите верное число: ");
} while (MainCycle == 1);
}
}
public class Money {
public int CardBalance = 2351820;
public int ATMBalance = 754560;
private Scanner sc = new Scanner(System.in);
Cycles CycleCheck = new Cycles();
Cycles CycleWithdraw = new Cycles();
Cycles CycleDeposit = new Cycles();
public void Check() {
System.out.println("Баланс Вашей карты: " + CardBalance + " рублей.\nЖелаете продолжить? Y/N");
CycleCheck.YN();
}
public void Withdraw() {
boolean cycle = true;
System.out.println("Выберите, сколько Вы хотите снять:");
while (cycle) {
int withdraw = sc.nextInt();
if (withdraw > CardBalance)
System.out.println("Ошибка: на балансе недостаточно средств, чтобы снять данную сумму. Введите корректную сумму:");
else if (withdraw > ATMBalance)
System.out.println("Ошибка: в банкомате недостаточно средств, чтобы снять данную сумму. Введите корректную сумму:");
else {
System.out.println("Вы сняли " + withdraw + " р. Желаете продолжить? Y/N");
CardBalance = CardBalance - withdraw;
cycle = false;
CycleWithdraw.YN();
}
}
}
public void Deposit() {
boolean cycle = true;
System.out.println("Выберите, на сколько Вы хотите поплнить баланс:");
while (cycle) {
int deposit = sc.nextInt();
if (deposit > 1000000)
System.out.println("Сумма пополнения не должна превышать 1 000 000. Пожалуйста, внесите верный депозит:");
else {
CardBalance = CardBalance + deposit;
System.out.println("Вы пополнили баланс на "+deposit+" р. Желаете продолжить? Y/N");
cycle = false;
CycleDeposit.YN();
}
}
}
public class Cycles {
private boolean cycle = true;
private String cont;
public int SecCycle = 1;
Scanner sc = new Scanner(System.in);
public float getSecCycle() {
return this.SecCycle;
}
public void YN () {
while (cycle) {
cont = sc.nextLine();
if (cont.equalsIgnoreCase("N")) {
SecCycle = 2;
System.out.println("Спасибо за работу. Хорошего дня!");
break;
}
else if (cont.equalsIgnoreCase("Y")) {
SecCycle = 1;
cycle = false;
} else System.out.println("Ошибка. Введите верное выражение: ");
}
}
}
public class Card {
Scanner sc = new Scanner(System.in);
public void Insert() {
boolean cycle=true;
System.out.println("Здравствуйте. Введите номер карты:");
while (cycle) {
String CardNumber = sc.nextLine();
String[] subCardNumber;
String delimeter = "-";
subCardNumber = CardNumber.split(delimeter);
if (subCardNumber.length != 4 || subCardNumber[0].length() != 4 || subCardNumber[1].length() != 4 || subCardNumber[2].length() != 4 || subCardNumber[3].length() != 4)
System.out.println("Ошибка. Введите верный номер карты:");
else {
System.out.println("Верный номер карты.");
cycle = false;
}
}
}
public void PIN() {
boolean cycle = false;
int wrongPIN=0;
System.out.println("Введите PIN-код:");
while (!cycle) {
Scanner sc = new Scanner(System.in);
int PIN=1111;
int InsertPIN = sc.nextInt();
if (InsertPIN == PIN) {
System.out.println("Добро пожаловать.");
cycle = true;
} else if (wrongPIN == 0) {
System.out.println("Ошибка. Неверный PIN-код.");
wrongPIN++;
System.out.println("Осталось 2 попытки.");
} else if (wrongPIN == 1) {
System.out.println("Ошибка. Неверный PIN-код.");
wrongPIN++;
System.out.println("Осталась 1 попытка.");
} else if (wrongPIN == 2) {
System.out.println("Вы ввели неверный PIN-код 3 раза. Ваша карта была заблокирована.");
}
}
}
}
Так у вас значение поля в самом классе равно 1, вот его вы и видите. Либо передавайте значение в конструкторе, либо измените в классе.
UPD: Все дело в том, что у вас создаётся два экземпляра класса Cycles в MainClass и в Money. Соответственно все правильно что он вам возвращает 1. Вам следует разобраться с "мешаниной" между классами и тогда все будет работать.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Дано - входящий List<Integer>По нему нужно пройтись через Stream, если сумма всех чисел чётная - удалить все чётные
Проблема вот в чёмУ меня есть класс
Пишу клиент-серверное приложение, от сервера клиенту сообщение приходит, а от клиента серверу не приходитПричём не выводится никакой ошибки,...