Podzielenie kolumn i wrzucenie wyników do tablic

0

Cześć mam przykładowy plik tekstowy, którego schemat wygląda jak poniżej i opisuje kolumny:
imię wiek punkty
Jan 20 10
Anna 15 30
Kasia 21 4
Przemek 14 11
Marcin 22 18

Chciałbym wrzucić dane pełnoletnich osób i niepełnoletnich na dwie tablice i obliczyć średnią punktów dla obu tablic. Nie za bardzo wiem jak oddzielić od siebie kolumny, załóżmy że dane oddzielała będzie spacja - (" "). Pomożecie? :) :)

0

String[] podzielonaLinia = linia.split(" ");

0

Podpowiecie jak dokonać sumy całej kolumny? np wlasnie wieku

0

zacznij od napisania pętli która iteruje się tych linijkach pliku i korzysta z split które podał Ci Shalom

0

Zrób klasę Person która ma pola imie, wiek, punkty. Następnie za pomocą split które podałem zrób sobie listę Person, a potem to juz będzie zupełnie trywialne.

0

Ja bym trochę rozbudował dzielenie na fragmenty - a nuż gdzieś między danymi są dwie spacje albo znak tabulacji.

List<String> tokens = Arrays.stream(s.split("\\s")).filter(token -> !token.isEmpty()).collect(Collectors.toList());
0
class Person 
{
	private String imie;
	private String nazwisko;
	private String plec;
	private int wiek;

	public Person(String _imie, String _nazwisko, String _plec, int _wiek) 
	{
		this.imie = _imie;
		this.nazwisko = _nazwisko;
		this.plec = _plec;
		this.wiek = _wiek;
	}
	
	
	
	public String toString(){
	    return  this.imie + " "  +this.nazwisko;
	}


	

	public static void main(String[] args) 
	{
		
		
		
		 try {
	            File f = new File("lista.txt");
	            Scanner sc = new Scanner(f);
	            List<Person> people = new ArrayList<Person>();
	            while(sc.hasNextLine()){
	                String line = sc.nextLine();
	                String[] dane = line.split(":");
	                String imie = dane[0];
	                String nazwisko = dane[1];
	                String plec = dane[2];
	                int wiek = Integer.parseInt(dane[3]);
	                Person p = new Person(imie, nazwisko, plec, wiek);
	                people.add(p);
	            }

	            //for (int i=0;i<people.size();i++){
	            for(Person p: people){
	            	if (p.wiek > 18)
	            	{
	            	
	            		System.out.println(p.toString());
	            	}
	                
	            }
	            
	            

	        } catch (FileNotFoundException e) {         
	            e.printStackTrace();
	        }
	    }
	
		

Zrobiłem to zgodnie z tym co pisal Shalom, przerobiłem oczywiście troszkę program, zamiast atrybutu punkty wrzuciłem płeć. Udało mi się wyświetlić osoby pełnoletnie. Mam jednak problem z tym w jaki sposób zsumować np. wiek wszystkich osób z listy. z gory dzieki

}
0
int suma = 0;
for(Person p: people){
      suma+=p.wiek;
}

Musisz zmienić dostęp pola wiek albo dopisać w klasie Person gettera

public getWiek()
{
    return wiek;
}

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