Utworzyłem program w jednym pliku o tej samej nazwie co klasa, gdzie wczytuje mi wszystkie dane do zmiennych. Po czym chciałem dodać, aby utworzone dane zapisywaly sie jako dane do obiektu.

  1. Jak to zrobić (niestety nie potrafię póki co) rozdzielić ten kod na dwa pliki? by było wszystko bardziej przejrzyste?
  2. Jak zmienić możliwość wpisywania daty, by użytkownik wpisywał ją jako dd.mm.rrrr , a nie tak, jak to jest dotychczas czyli wszystko z osobna? Aktualnie po błędnie wpisanej dacie (zrobiony warunek w if'ie program idzie dalej, nie czeka, aż użytkownik wpisze poprawny dzien/miesiąc czy rok.
  3. Zadeklarowałem zmienne globalne by pozostałe case'y je widziały i chyba robię coś źle ponieważ wyskakuje błąd i nie pobiera mi wypełnionych danych z case 1.
  4. Ewentualne sugestie? Program jest na zaliczenie, niestety też niezbyt łapię zasadę konstruktorów, a w treści zadania mam:
    • 1 konstruktor w każdej klasie,
    • 4 zmienne różnych typów,
    • 3 metody opisujące adekwatne do założeń działania.
    • obsługę wyjątków,
    • metody przeciążone (ewentualnie przedefiniowanie)

Bardzo miło widziana dokładna pomoc gdyż zadanie niestety przewyższa moje umiejętności chociaż może wydawać się bardzo proste.

package javaapplication3;

import java.io.IOException;
import java.util.Scanner;

public class Osoba {

    public static void informacja() {
        System.out.println("informacje");

    }

    public static int menu() {
        System.out.println("     ________________________________________");
        System.out.println("                                                                                     ");
        System.out.println("                                               ");
        System.out.println("     1. Wprowadz swoje dane");
        System.out.println("     3. informacja");
        System.out.println("     0. Koniec");

        Scanner in = new Scanner(System.in);
        int w = in.nextInt();

        return w;
    }

    public static void main(String[] args) throws IOException {
        Scanner in = new Scanner(System.in);

        int wybor = menu();

        // Zmienne globalne 
        int a = 0,b = 0,c = 0,d = 0,e = 0,f = 0,g = 0;
        int sem = 0, day = 0, month = 0, year = 0;
        String imie;
        String nazwisko;

        double wzrost = 0;

        while (wybor != 0) {

            switch (wybor) {
                case 1:

                    Osoba os1 = new Osoba();
                    System.out.println("Podaj swoje imie:");
                    Scanner input = new Scanner(System.in);
                    os1.imie = input.nextLine();

                    System.out.println("Wpisz dzien urodzenia:");
                    input = new Scanner(System.in);
                    os1.day = input.nextInt();
                    if (os1.day<32)

                        {

                        }

                    else 
                                {
                                    System.out.println("Dzien musi byc z zakresu 1-31 dni. Sprobuj ponownie.");
                                    menu();

                                }

                    System.out.println("Miesiac:");
                    input = new Scanner(System.in);
                    os1.month = input.nextInt();
                    if (os1.month<13)
                        {

                        }
                    else 
                                {
                                    System.out.println("Miesiecy w roku jest 12. Sprobuj ponownie.");
                                    menu();  

                                }
                    System.out.println("Rok urodzenia:");
                    input = new Scanner(System.in);
                    os1.year = input.nextInt();
                    if (os1.year<2019)
                        {

                        }
                    else
                                {
                                    System.out.println("Wyglada na to, ze jeszcze sie nie urodziles :) "); 
                                    menu();  
                                    // Po blednej odpowiedzi program idzie dalej, nie pozwala wpisac raz jeszcze liczby (w calej dacie). ***********
                                }

                    break;

                case 2:

                    System.out.println("Witaj "+ os1.imie); //Zmienne zostały dodane jako globalne i nadal ich nie wykrywa ****
                    System.out.println("Jestes na semestrze "+os1.sem);

                   break;

                case 3:            

                    System.out.println("Jestes na " + os1.sem + " semestrze studiow.");

                    System.out.println("."+a);

                    break;
                case 4:
                    informacja();

            }

            System.out.println("\nWcisnij Enter, aby powrocic do menu...");
            System.in.read();

            wybor = menu();
        }

        System.out.println("  .");
        System.out.println("\n        Koniec programu\n\n");
    }
}