To są moje początki z javą i dla utrwalenia staram sie napisać prosty programik do zapisywania zamówień klienta do pliku tekstowego.
Wszystko działa gdy w kodzie źródłowym zdefiniuje całe zamówienie (imie, nazwisko, it.), jednak chciałbym napisać metodę do wprowadzania z klawiatury tych składowych zamówienia, ale mam z tym pewien problem.
Kod wygląda tak:
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.*;
class Zamowienie {
Scanner in = new Scanner(System.in);
public Zamowienie() {
}
public Zamowienie(String aImie, String aNazwisko, String aAdres, String aCzesc1) {
Imie = aImie;
Nazwisko = aNazwisko;
Adres = aAdres;
Czesc1 = aCzesc1;
CzasZamowienia = new Date();
}
public Zamowienie(String aImie, String aNazwisko, String aAdres, String aCzesc1, String sCzesc2) {
Imie = aImie;
Nazwisko = aNazwisko;
Adres = aAdres;
Czesc1 = aCzesc1;
Czesc2 = sCzesc2;
CzasZamowienia = new Date();
}
public Zamowienie(String aImie, String aNazwisko, String aAdres, String aCzesc1, String sCzesc2, String aCzesc3) {
Imie = aImie;
Nazwisko = aNazwisko;
Adres = aAdres;
Czesc1 = aCzesc1;
Czesc2 = sCzesc2;
Czesc3 = aCzesc3;
CzasZamowienia = new Date();
}
public String getImie(){
return Imie;
}
public String getNazwisko(){
return Nazwisko;
}
public String getAdres(){
return Adres;
}
public String getCzesci(){
Czesci = Czesc1+" "+Czesc2+" "+Czesc3;
return Czesci;
}
public String getDate(){
SimpleDateFormat sdf = new SimpleDateFormat(FORMAT_DATE);
return sdf.format(CzasZamowienia);
}
public void zapis(String aZamowienie)throws FileNotFoundException {
zamowienie = aZamowienie;
PrintWriter out = new PrintWriter("zamowienie.txt");
out.println(zamowienie);
out.close();
}
public void setImie(){
Imie = in.nextLine();
}
private String Imie = "";
private String Nazwisko = "";
private String Adres = "";
private String Czesci = "";
private String Czesc1 = "";
private String Czesc2 = "";
private String Czesc3 = "";
private Date CzasZamowienia;
private String FORMAT_DATE = "dd MMMM yyyy";
private String zamowienie;
}
import java.io.FileNotFoundException;
public class Test {
public static void main(String[] args)throws FileNotFoundException{
Zamowienie z = new Zamowienie("Jan", "Kowalski",
"Ćwiartki 3/4", "opona", "felga");
String zamowienie = (z.getImie()+" "+z.getNazwisko()+"\nAdres: "+z.getAdres()+"\nSkladniki: "+z.getCzesci()+"\nCzas zamówienia: "+z.getDate());
z.zapis(zamowienie);
System.out.println(zamowienie);
}
}
Na końcu klasy Zamówienie jest właśnie ta moja nieszczęsna metoda setImie, z którą mam problem. Kompletnie nie miałem pomysłu jak sie za to zabrać, zdaje sobie sprawę, że to co napisałem może być kompletną głupotą, ale cóż... nic innego nie mogłem wymyślić.
Jak wywołuje ją w konstruktorze w taki sposób:
Zamowienie z = new Zamowienie("z.setImie(), "Kowalski",
"Ćwiartki 3/4", "opona", "felga");
to dostaje błąd, że dane musza być w formie (String, String, ...) i wcale sie temu nie dziwie. Jak to ugryźć?
I jeszcze jedno, dlaczego w FORMAT_DATE nie mogę dodać godzin, minut, sekund? Jak ustawiałem na bodajże "IS" to dostawałem błąd.
ps. byłbym wdzięczny za wszystkie krytyczne komentarze dotyczące składni kodu, organizacji całego programu, itp.