Замена переменных

88
11 марта 2021, 14:40

Совсем новичок в Java, изучаю конструкторы и классы. Как-бы встретилась проблема с выводом при "перезапуске" программы.

package com.company;
import com.sun.source.tree.Tree;
import java.util.Scanner;
public class Main {

public static class Trees {
    int LengthRadix;
    int LengthToHeight;
    int Age;
    String Name;
    static int numbers;
    int Number;
    static void setNumbers (Trees obj){
        obj.Number = ++Trees.numbers;
    }
}
public static void main(String[] args) {
    main();
}
private static void main(){
        int[] Treearrayint = new int[64];
        String[] Treearraystr = new String[16];
        int a2 = 0;
        int i = 0, i2 = 0;
        boolean m = true;
        Trees AppleTree;
        AppleTree = new Trees();
        Trees.setNumbers(AppleTree);
        AppleTree.LengthRadix = 2;
        AppleTree.LengthToHeight = 10;
        AppleTree.Age = 2;
        AppleTree.Name =  "Apple";
        Trees LipaTree = new Trees();
        Trees.setNumbers(LipaTree);
        LipaTree.LengthToHeight = 7;
        LipaTree.LengthRadix = 2;
        LipaTree.Age = 2;
        LipaTree.Name = "Lipa";
        System.out.println("Дерево: "+ AppleTree.Name + ", имеет возраст "+ AppleTree.Age +" лет(годов),высоту "+AppleTree.LengthToHeight +
                " м и ширину "+ AppleTree.LengthRadix+ " м");
        System.out.println("Дерево: "+ LipaTree.Name + ", имеет возраст "+ LipaTree.Age +" лет(годов),высоту "+LipaTree.LengthToHeight +
                " м и ширину "+ LipaTree.LengthRadix+" м");
        System.out.println("Хотите добавить информацию о своём дереве?");
        System.out.println("1)Да  2)Нет");
        int vvod;
        Scanner input = new Scanner(System.in);
        vvod = input.nextInt();
        switch (vvod) {
            case 1:{
                break;
            }
            case 2: {
                System.exit(1);
                break;
            }
            default:{
                System.out.println("Вы не ввели требуемую цифру!");
                System.exit(1);
                break;
            }
        }
    Trees NewTree;
    NewTree = new Trees();
    Trees.setNumbers(NewTree);
    int b , c , d;
    System.out.println("Введите имя дерева.");
    String a = input.next();
    System.out.println("Введите возраст дерева.");
    b = input.nextInt();
    System.out.println("Введите высоту дерева.");
    c = input.nextInt();
    System.out.println("Введите ширину дерева.");
    d = input.nextInt();
    NewTree.Name = a;
    NewTree.Age = b;
    NewTree.LengthRadix = d;
    NewTree.LengthToHeight = c;
    /*System.out.println("Дерево: "+ NewTree.Name + ", имеет возраст "+ NewTree.Age +" лет(годов),высоту "+NewTree.LengthToHeight +
            " м и ширину "+ NewTree.LengthRadix+ " м");*/
    for (int i1 = 0; i1 < 1; i1++) {
        Treearraystr[i2] = a;
        i2++;
        Treearrayint[i] = b;
        i++;
        Treearrayint[i] = c;
        i++;
        Treearrayint[i] = d;
        i++;
        System.out.println("Информация о дереве успешно добавлена!");
        a2++;
    }
    for(;m == true;){
        System.out.println("Ваши добавленные информация о деревьях: ");
        for(int a1 = 0;a1 < a2;a1++) {
            System.out.println("Дерево: " + Treearraystr[i2 - 1] +
                    ", имеет возраст " + Treearrayint[i - 3] +
                    " лет(годов),высоту " + Treearrayint[i - 2] +
                    " м и ширину " + Treearrayint[i - 1] + " м");
        }
        System.out.println("-=_____________________________________________________________=-");
        m = false;
    }
    System.out.println("Желайте ли вы, выйти из программы?");
    System.out.println("1)Да  2)Нет");
    vvod = input.nextInt();
    switch (vvod) {
        case 1: {
            main();
            break;
        }
        case 2: {
            System.exit(1);
            break;
        }
        default: {
            System.out.println("Вы не ввели требуемую цифру!");
            System.exit(1);
            break;
        }
    }
}
}

При выводе информации о дереве значениеa2 = 1, но после "перезапуска" по воле пользователя переменная заменяется int a2 = 0;, тем самым не может выдать информацию о 1-ом, который был введён до перезапуска. Как можно это обойти подобие "инициализации" или исправить это?

Answer 1

Программа запускается начиная с метода main, где в одной из первых строчек в переменную a2 кладут 0. Что именно здесь работает не так, как вы ожидали? Переменные не сохраняют свои состояния после остановки программы. Каждый раз все происходит заново, с нуля. Если хотите, чтобы состояние а2 сохранилось и использовалось в последующих запусках программы - записывайте его в файл в конце и считывайте из файла в начале

READ ALSO
Проверка первого символа строки

Проверка первого символа строки

Мне нужно вывести первый символ и проверить, чем он являетсяГде-то подсмотрел, что можно использовать str

116
Зацикленное нажатие по кнопке

Зацикленное нажатие по кнопке

Есть одна кнопка в вконтакте, как сделать её зацикленное нажатие с неким интервалом через Console в Ctrl+Shift+C? Раньше находил такой для добавления...

80
p5.js: Uncaught TypeError: dialog.createElement is not a function

p5.js: Uncaught TypeError: dialog.createElement is not a function

Всем доброго времени суток! Пилил я значит веб-страничку простенькую с использованием p5js

89
Однотипные функции

Однотипные функции

В коде ниже представлена одна из множества однотипных функцийНужно объединить их в одну и сделать задаваемым как параметр номер функции...

99