Dublowanie się obiektow w tablicy

0

Kod który przedstawiam poniżej ogolnie dziala. Jednak mam nastepujacy problem. Tzn pokolei:
Klikam 1 - zwraca liste: lista pusta - OK
Klikam 2 - dodaje uzytkownika - np. Asia
Klikam 1 - zwraca liste: zwraca Asia - OK
Klikam 2 - dodaje uzytkownika - np. Jan
Klikam 1 - zwraca liste: zwraca Jan Jan ??? -- Powinno byc Asia Jan - w tym kroku obiekt sie nadpisuje, prosze o wskazowke co robie zle, lub o czym zapomnialem

public class WypozyczalniaAuto {

	String  nazwa;
	List<Klient> ListaKlientow = new ArrayList<Klient>();
	
}

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {

	  public static int menu(){
		
		    System.out.println("1 - Wyswietl klientow");
		 	System.out.println("2 - Dodaj klienta");
			
			Scanner in = new Scanner(System.in);
			
			int num = in.nextInt();
		  
		  return num;
		  
	  }
	
	
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
	

		 WypozyczalniaAuto wypo = new WypozyczalniaAuto();	
		 Klient k = new Klient();
		 
		 int wybor = menu();
		 
	        while(wybor!=0){
		
			switch (wybor){
			
		
			case 1:
				System.out.println("Lista klientow");
				
				if(wypo.ListaKlientow.isEmpty()){
					System.out.println("Lista pusta");	
				}
				
				for(int i=0; i<wypo.ListaKlientow.size(); i++){
					System.out.println(wypo.ListaKlientow.get(i).imie);
				}
					
				
				
			break;	
			case 2:

				System.out.println("Jan nazywa sie nazywasz?");

				Scanner in2 = new Scanner(System.in);

				k.imie = in2.nextLine();
				wypo.ListaKlientow.add(k);
			
				
			break;
			
			}
			
			wybor = menu();
		 }
	
	}
}

1

http://naukajavy.pl/kurs-jezyka-java/86-referencje
Przed dodaniem powinieneś tworzyć nowy obiekt Klient i wtedy go dodać. Tak to go nadpisujesz.

0

Czy w przypadku usunięcia osoby z listy jest inny sposób niż ponizej?
Tzn na zasadzie usuniecia obiektu klienta nie zwracając calej listy klientow.

case 3:
				

				Scanner in3 = new Scanner(System.in);
				if(wypo.ListaKlientow.isEmpty()){
					System.out.println("Nie ma klientow do usuniecia");	
				}
				else{
					System.out.println("Kogo chcesz usunac?");
					//wyswietlenie klientow
					for(int i=0; i<wypo.ListaKlientow.size(); i++){
						System.out.println(i+". "+wypo.ListaKlientow.get(i).imie);
					}
					//usuniecie
					for(int i=0; i<wypo.ListaKlientow.size(); i++){
						i = in3.nextInt();
					wypo.ListaKlientow.remove(i);
					}
					

				}
				
				
			break;
0

Gdy wyświetlasz listę klientów, podajesz przed każdym klientem index. Rozumiem, że jest on po to, aby po tym indexie usunąć potem klienta - wtedy na liście klientów wystarczy wywołać metodę remove(int index), która przyjmuje jako argument, index obiektu w liście, który ma zostać usunięty.

0

W uproszczeniu chodzilo mi o to by nie zwracac listy

W obiekcie klient.imie jest imie klienta

Chodzilo mi o usuwanie na zasadzie:

Podaj klienta do usuniecia: (klient.imie -wczytuje)
(wpisuje) Radek
Koniec
Klient Radek znika z listy -remove(klient.imie)

Czy tak tez przejdzie, kiedy nie ma dostepu do obiektu klient w tym case, skad go wyczarowac?

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