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.
- Jak to zrobić (niestety nie potrafię póki co) rozdzielić ten kod na dwa pliki? by było wszystko bardziej przejrzyste?
- 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.
- 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.
- 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");
}
}