Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/25: Рейтинг темы: голосов - 25, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 03.04.2018
Сообщений: 21

Не сохраняется значение переменной в поле

28.12.2020, 21:01. Показов 4858. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я не думаю, что есть смысл прикреплять код. Пишу примитивное казино. Написал отдельный класс, в котором есть поле с переменной "money". Изначально у неё значение 100. Так вот, по ходу программы я перехожу из класса "Главное Меню" в класс, где происходит сам расчет выигрыша, там же к переменной "money" прибавляется какое-то значение, после чего мы переходим обратно в класс с главным меню, но там уже значение переменной опять становится первоначальным - 100. Напомню, что переменная находится в поле. Объясните, пожалуйста, как сделать так, чтобы значение переменной в поле сохраняло изменения.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.12.2020, 21:01
Ответы с готовыми решениями:

Не сохраняется значение переменной
Нужна помощь. Не сохраняет данные переменных после функции,попробовал многое(от замены переменных,до добавления новых) ,но по ходу у меня...

Не сохраняется значение переменной сеанса
Имеется условие: $_SESSION = $_POST; $_SESSION = $_POST; if ($_SESSION && $_SESSION){ echo 'Сообщение'; } По нажатию...

Не сохраняется значение в стринговой переменной
мне нужно сохранить значение из массива op1 в стринговую переменную op2 op2 = Convert.ToString(op1.ToString()); но оно не...

5
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
28.12.2020, 23:15
AlexZumar, мне вот прям любопытно посмотреть как ты "ходишь из класса в класс". И как у тебя волшебным образом переменная сбрасывается. Вангую, что каждый раз создается новый экземпляр. Лечится элементарно, но я не думаю, что есть смысл прикреплять код.
0
0 / 0 / 0
Регистрация: 03.04.2018
Сообщений: 21
28.12.2020, 23:28  [ТС]
iSmokeJC, да мне код-то готовый и не нужен. Не сторонник такого.. лучше сам допру. Может объяснил не так - прощу прощения. Постараюсь внятнее обьяснить. Запускаю программу, которая переходит в метод Main. Собственно, там у меня пусто, лишь вызов другого класса и метода соответственно (Метод: «Menu»). В нем никаких полей нет, там тебе только выдают твоё количество монет, после чего вызывается метод из другого уже класса, где количество монет увеличивается и там же я вызываю обратно метод “Menu”, который соответственно в другом классе, там я проверяю количество монет и их вновь 100. Количество монет находится тоже в отдельном классе, то есть ни в одном из прошлых его нет.
Если я хожу вокруг да около, то вновь прощу прощения. Прикрепить код сейчас возможности нет, к сожалению.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
28.12.2020, 23:35
AlexZumar, судя по твоим цепочкам, с ооп у тебя явно проблемы. Давай угадаю - у тебя чуть ли не везде понатыкано волшебное слово static.
Короче - без кода говорить не о чем.
0
0 / 0 / 0
Регистрация: 03.04.2018
Сообщений: 21
29.12.2020, 07:37  [ТС]
iSmokeJC, Я раньше писал вообще всё в одном классе и методе, но сейчас начал экспериментировать. Учусь я сам, поэтому косяков в коде, я думаю, предостаточно будет.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
package com.company;
 
import javax.sql.rowset.spi.SyncResolver;
import java.util.Random;
import java.util.Scanner;
 
 
class WorkingWithMoney {
 
    public int money = 100;
 
    public void setMoney(int money) {
        this.money = money;
    }
 
    public void addMoney(int money) {
        this.money += money;
    }
 
    public void removeTheMoney(int money) {
        this.money -= money;
    }
 
    public int returnTheMoney() {
        return this.money;
    }
}
 
class CasinoMachine {
 
    private String color;
    private byte range;
    private boolean parity;
    private boolean zero;
 
    public void Random(String choice) {
 
 
        Random random = new Random();
        int test;
        switch (choice) {
 
            case "byte":
                this.range = (byte)(random.nextInt(37));
            case "color":
                test = random.nextInt(2);
                if (test == 0) this.color = "black";
                else this.color = "red";
            case "parity":
                test = random.nextInt(39);
                this.parity = test % 2 == 0;
            case "zero":
                test = random.nextInt(39);
                this.zero = test == 0 || test == 38;
 
        }
 
    }
 
    public String getColor() {
        return this.color;
    }
    public  byte getRange() {
        return this.range;
    }
    public boolean isParity() {
        return this.parity;
    }
    public boolean isZero() {
        return this.zero;
    }
 
 
 
}
 
class BetsCount {
 
    CasinoMachine casinoMachine = new CasinoMachine();
    WorkingWithMoney withMoney = new WorkingWithMoney();
    GameMenu gameMenu = new GameMenu();
 
    public void bets(int choice, int bet) {
 
        switch (choice) {
 
            case 1:
 
                withMoney.removeTheMoney(bet);
                casinoMachine.Random("parity");
 
                if (casinoMachine.isParity()) {
                withMoney.addMoney(bet*17);
                System.out.println("Congratulations! You won!\nNow on your account: " + withMoney.returnTheMoney() + "$");
                gameMenu.Start(false);
 
                }
            case 2:
 
        }
 
    }
 
}
 
class GameMenu {
 
    boolean firstGame = true;
 
    public void Start(boolean first) {
 
        int ch, bt;
 
        Scanner scan = new Scanner(System.in);
        WorkingWithMoney money = new WorkingWithMoney();
        BetsCount bets = new BetsCount();
 
        if (this.firstGame) {
            this.firstGame = !first;
            System.out.println("Welcome to my Casino.\nNow on your account: " + money.returnTheMoney() + "$\nChoose a mode:\n1) Parity\n2) Range\n3) Color\n4) Zero");
        }
        ch = scan.nextInt();
        bt = scan.nextInt();
        bets.bets(ch, bt);
    }
 
 
}
 
public class Main {
 
    public static void main(String[] args) {
 
     GameMenu gameMenu = new GameMenu();
     WorkingWithMoney withMoney = new WorkingWithMoney();
     withMoney.setMoney(222);
     gameMenu.Start(true);
 
    }
}
0
 Аватар для Aviz__
2736 / 2046 / 506
Регистрация: 17.02.2014
Сообщений: 9,462
29.12.2020, 09:03
Цитата Сообщение от AlexZumar Посмотреть сообщение
как сделать так, чтобы значение переменной в поле сохраняло изменения.
вот, разбирайся. моделирую ставку красное/черное с выводом наличных у игрока.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public class Helper {
 
    public static void main(String[] args) {
        Gamer gamer = new Gamer();
        int bet;
        for (int i = 0; i < 5; i++) {
            try {
                bet = gamer.setMoneyOnGame(10);
                if (Math.random() > 0.6)  // 0.6 т.к. при зеро игрок проиграл
                    gamer.setMoney(2 * bet);
                System.out.println(gamer.getMoney());
            } catch (RuntimeException e) {
                System.out.println(e.getMessage());
                break;
            }
        }
    }
}
class Gamer {
    private int money = 100;
 
    public int setMoneyOnGame(int vol) throws RuntimeException {
        if (money - vol < 0) throw new  RuntimeException("Денег не достаточно для ставки");
        money -= vol;
        return vol;
    }
 
    public int getMoney() {
        return money;
    }
 
    public void setMoney(int money) {
        this.money += money;
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.12.2020, 09:03
Помогаю со студенческими работами здесь

Почему не сохраняется значение переменной класса из метода?
Есть переменная count. Есть ситуация, в которой когда объект перетаскивается на назначенное поле на сцене и отпускается кнопка мыши,...

Как вывести значение из переменной в тестовое поле?
Добрый день, подскажите, как сложить два значения, а затем вывести результат из переменной в тестовое поле, посредством...

Можно в несвязанное поле отчета записать значение переменной
Можно ли в Access сделать следующее: в несвязанное поле отчета записать значение переменной, определенной при открытии отчета. Мне...

Как перевести значение переменной в поле Едит или Мемо?
Допустим есть x:=r*cos(f); y:=r*sin(f); как сделать, чтобы при нажатие на кнопку r*cos(f); r*sin(f) было в Едите или Мемо?

Не сохраняется результат переменной
Всем привет. Только осваиваю данный метод. Вопрос в следующем: Есть несложный скрипт в PS, к которому нарисовал простенький...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru