Problem z ';' expected

0

Jest to mój pierwszy post na tym forum, także witam wszystkich.
Jakiś czas temu rozpocząłem naukę Javy i wraz z poznawaniem nowych rzeczy piszę przykładowe programy z ich użyciem. Obecnie stoję w miejscu z nauką z powodu błędów, których sam nie jestem w stanie naprawić, najprawdopodobniej są to jakieś proste, a wręcz głupie błędy, ale ze względu na to, że to moje początki z Javą to ciężko jest mi je rozgryźć.

Kod głównego programu:

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

public class Test{
	public static void main(String[] args){
		//Scanner odczyt = new Scanner(System.in);
		BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
		
		System.out.println("Ilu pracownikow chcesz wprowadzic do systemu?");
		int l = Integer.parseInt(input.readLine());
		for(int i=0; i<l; i++){
		
		Pracownik pracownik = new Pracownik[i];
		
		System.out.println("Wprowadz dane pracownika (imie, nazwisko, wyplata): ");
		pracownik = (input.readLine(), input.readLine(), input.readLine());
		
		System.out.println("\n...:::PRACOWNIK "+i+":::...");
		System.out.println("Imie: "+pracownik[i].getImie()+"\nNazwisko: "+pracownik[i].getNazwisko()+"\nWyplata: "+pracownik[i].getWyplata());
		}
	}
}

Kod klasy Pracownik:

 
public class Pracownik{
	private String imie;
	private String nazwisko;
	private String wyplata;
	
	public Pracownik(){
		this.imie = "";
		this.nazwisko = "";
		this.wyplata = "";
	}
	
	public Pracownik(String imie, String nazwisko, String wyplata){
		this.imie = imie;
		this.nazwisko = nazwisko;
		this.wyplata = wyplata;
	}
	
	String getImie(){
		return imie;
	}
	
	String getNazwisko(){
		return nazwisko;
	}
	
	String getWyplata(){
		return wyplata;
	}
}

Treść błędów:


Test.java:18: ')' expected
                pracownik = (input.readLine(), input.readLine(), input.readLine(
));
                                             ^
Test.java:18: ';' expected
                pracownik = (input.readLine(), input.readLine(), input.readLine(
));
                                                               ^
Test.java:18: ';' expected
                pracownik = (input.readLine(), input.readLine(), input.readLine(
));

 ^
3 errors

ps. zmienną wyplata celowo zadeklarowałem jako String, ze względu na to, że nie byłem do końca pewny czy Double da sie odczytać za pomocą readLine().

0
(input.readLine(), input.readLine(), input.readLine());

To mi wydaje się podejrzanie. Co przez to chcesz osiągnąć? Złączyć stringi?

1

masz 2 błędy, po pierwsze musisz utworzyć tablicę pracowników i podać jej rozmiar:
u ciebie

Pracownik pracownik = new Pracownik[i];

poprawnie

Pracownik[] pracownik = new Pracownik[l];

a po drugie, utworzyć konkretnych pracowników:
u ciebie

pracownik = (input.readLine(), input.readLine(), input.readLine());

poprawnie

pracownik[i] = new Pracownik(input.readLine(), input.readLine(), input.readLine());
0

Przez

input.readLine()
chce po prostu wczytać dane wpisane przez użytkownika.
Tak wiem, mogłem użyć po prostu Scanner'a, ale ze względu na to, że poznałem właśnie BufferedReader chciałem to przetestować. I tutaj rodzi się jedno z moich pytań, a mianowicie kiedy korzystać ze zwykłego Scanner, a kiedy z BufferedReader?

pk_82 poprawiłem tak jak napisałeś, wtedy dostałem błąd o IOException wiec zastosowałem wyjątki i teraz program wygląda tak:

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

public class Test{
	public static void main(String[] args){
		int l = 0;
		BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
		
		System.out.println("Ilu pracownikow chcesz wprowadzic do systemu?");		
		try{
		l = Integer.parseInt(input.readLine());
		} catch(IOException ioe)
			{System.out.println("Bledne dane!!!");
			}
			
		for(int i=0; i<l; i++){		
		Pracownik[] pracownik = new Pracownik[l];
		System.out.println("Wprowadz dane pracownika (imie, nazwisko, wyplata): ");
		try{
		pracownik[i] = new Pracownik(input.readLine(), input.readLine(), input.readLine());
		} catch(IOException ioe)
			{System.out.println("Bledne dane!!!");
			}
			
		System.out.println("\n...:::PRACOWNIK "+i+":::...");
		System.out.println("Imie: "+pracownik[i].getImie()+"\nNazwisko: "+pracownik[i].getNazwisko()+"\nWyplata: "+pracownik[i].getWyplata());
		}
	}
}

Wszystko działa tak jak należy, teraz tylko chciałbym wiedzieć jak to wygląda okiem doświadczonego programisty... Co zmienić, co dodać, a co usunąć ;p Czy nie popełniam jakiś głupich błędów w 'stylistyce' kodu, ewentualnie czy mój tok myślenia jest dobry?

Liczę na jakieś cenne uwagi od Was, bo nie chce na samym początku przygody z Javą łapać jakiś głupich nawyków, których później może być ciężko mi sie pozbyć.
Z góry dzięki za wszystkie uwagi.

Pozdro

1

Nie formatujesz kodu.
Poza tym, przy każdej iteracji pętli tworzysz kolejną tablicę, wstawiasz do niej tylko jeden obiekt i w ogóle z niej nie korzystasz. Linia:
Pracownik[] pracownik = new Pracownik[l]; musisz przenieść nad for.

0

Do takich prostych operacji zamiast klasy Bufferedreader lepsza będzie raczej klasa Scanner :]

1 użytkowników online, w tym zalogowanych: 0, gości: 1