Problem z czytaniem danych

0

Witam oto treść zadania:
Napisz program składający się z dwu klas, umieszczonych w dwu plikach (ale w
jednym pakiecie). Jeden plik ma zawierać definicję klasy Osoba (z imieniem i nazwiskiem oraz
metodami pozwalającymi na odczytywanie i zapisywanie tych atrybutów oraz konstruktorem),
drugi ma wczytać od użytkownika dane 10 osób, zapamiętać je w tablicy osób, a następnie wypisać
w odwrotnej kolejności.
Wersja trudniejsza: program czyta dane, aż użytkownik poda puste nazwisko. Tablica początkowo
ma np. 10 elementów, ale w trakcie działania programu należy ją wymieniać w miarę potrzeby na
większą (za każdym razem dwukrotnie zwiększając jej pojemność). Oczywiście nie można przy
tym zgubić dotychczasowej zawartości.

Oto mój kod

 package Osoba;

import java.util.Scanner;

public class Wczytywanie
{
	private static Scanner in;

	public static void main(String[] args)
	{
		in = new Scanner(System.in);
		Osoba[] osoby = new Osoba[10];
		
		int i = 0;
		String k;
		String m;
		do
		{
			k = in.next();
			m = in.next();

			osoby[i] = new Osoba(k, m);
			i++;
		}while(k.length() != 0 || m.length() != 0);
		i--;
		System.out.println(i);
		while(i >= 0)
		{
			System.out.println(osoby[i].getName() + " " + osoby[i].getSurname());
			i--;
		}
	}
}
package Osoba;

public class Osoba
{
	private String name = "";
	private String surname = "";
	
	public Osoba(String name, String surname)
	{
		this.name = name;
		this.surname = surname;
	}
	public String getName()
	{
		return name;
	}
	public String getSurname()
	{
		return surname;
	}
}

A mój problem polega na tym, że nie wiem jak powinno wyglądać to czytanie danych w wersji trudniejszej. Jeśli chodzi o problem z rozmiarem tablicy to na razie tej części nie robiłem.

0
 package Osoba;

import java.util.Scanner;

public class Wczytywanie
{
	private static Scanner in;

	public static void main(String[] args)
	{
		in = new Scanner(System.in);
		Osoba[] osoby = new Osoba[10];
		
		int i = 0;
		String k;
		String m;
		int j = 9;
		do
		{
			k = in.next();
			m = in.next();

			osoby[i] = new Osoba(k, m);
			i++;
			if(i == j)
			{
				System.arraycopy(osoby, 0, osoby, 0, osoby.length * 2);
			}
			j = osoby.length - 1;
		}while(k.length() != 0 || m.length() != 0);
		
		i--;
		while(i >= 0)
		{
			System.out.println(osoby[i].getName() + " " + osoby[i].getSurname());
			i--;
		}
	}
}

Dodałem to rozszerzanie tablicy aczkolwiek nie wiem czy o to chodziło :x

1

Czytanie do momentu pustego nazwiska możesz rozwiązać np.

 Scanner in = new Scanner(System.in);
        
        String name;

        while(!(name = in.nextLine()).equals("")) {
            System.out.println(name);
        }

        System.out.println("Koniec");

co do zwiększania wielkości tablicy to:

  • musisz utworzyć tablice tymczasową rozmiaru aktualnej
  • skopiować zawartość tablicy głównej do tymczasowej
  • stworzyć na nowo tablicę główną o nowym rozmiarze
  • skopiować tablice tymczasową do nowej tablicy głównej

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