Gdzie popełniłem błąd -aplikacja konsolowa-początkujacy

Gdzie popełniłem błąd -aplikacja konsolowa-początkujacy
J8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 12
0

Cześć,
Jak początkujący, mam pytanie gdzie tkwi błąd w tej konsolowej aplikacji.
Chciałbym napisać aplikacje konsolową i powoli ją rozwijać.Na razie chce zrobić po prostu wpłaty, wypłaty z konta oraz saldo żeby mi się pokazywało.
W tej chwili przykładowo wpłacam 500zł to na koncie się pokazuje, natomiast jak wpiszę KONTO powinno pobrać saldo po wpłacie ale jest kwota 0zł.
Czy muszę zadeklarować zmienną saldo jako 0 i po wpłacie wtedy doda kwotę?

Kopiuj
public class Konto {
	private double saldo;
	
	public Konto(){	
	}
	
	public double getSaldo() {
		return saldo;
	}


	public void setSaldo(double saldo) {
		this.saldo = saldo;
	}
	public void wpłata(double ile) {
	  saldo+=ile;
	  System.out.println("Transakcja przebiegła pomyślnie, wpłaciłeś:" + ile +"zł");
	  
	}	 
	public void wyplata(double ile) {
	 if(ile >saldo) {
	System.out.println("Brak środków na koncie");
	System.out.println("Spróbuj ponownie");	 
	 }
	 else if(ile <saldo){
		 System.out.println("Transakcja przebiegła pomyślnie" );
	 saldo-=ile;	 
	 }
 }
}
Kopiuj
public class BankTest {

	public static void main(String[] args) {
		
		Scanner sc  = new Scanner(System.in);
		System.out.println("Witamy, w naszym banku!!!");
		System.out.println();
		System.out.println("W czy możemy pomóc?");
		System.out.println();
		for(int i=0; i<1000000000; i++) {
		System.out.println("Czy chcesz: \nWpłacić Pieniądze 	 -Wpisz WPLATA "
				+ "						\nWypłacić Pieniądze 	 -Wpisz WYPLATA  "
				+ "						\nZałożyć Konto		 -Wpisz KONTO "
				+ "						\nKupić Walutę 		 -Wpisz KUPIC "
				+ "						\nSprzedać Walutę 	 -Wpisz SPRZEDAC"
				+ "						\nWziąć Kredyt 		 -Wpisz KREDYT"
				+ "						\nKoniec		     	 -Wpisz KONIEC"	);			
		
		String decisionClient =sc.next(); 	
		Konto konto = new Konto();		
		if ("WPLATA".equals(decisionClient)) {
			System.out.println("Ile chcesz wpłacic?" );
			double ile=sc.nextDouble();
			konto.wpłata(ile);
                       System.out.println(konto.getSaldo());
			
		} 
		if ("WYPLATA".equals(decisionClient)) {
			
		}else
		if ("KONTO".equals(decisionClient)) {
			System.out.println(konto.getSaldo());
			
		}
		if ("KUPIC".equals(decisionClient)) {
			
		}
		if ("SPRZEDAC".equals(decisionClient)) {
			
		}
		if ("KREDYT".equals(decisionClient)) {
			
		}if ("KONIEC".equals(decisionClient)) {
			break;
		}
		}
}
}
KamilAdam
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Silesia/Marki
  • Postów: 5550
4

Do do błędu to linia Konto konto = new Konto(); powinna być przed pętlą.
Co do reszty to:

  • temat jest bez sensu
  • formatowanie jest złe
  • setter setSaldo() też jest bez sensu (nigdy nie powinien Ci się przydać)
  • jeśli konstruktor bezparametrowy jest jedynym konstruktorem w klasie to nie musisz go tworzyć
  • zamień te stringi na enumu lub chociaż stałe
  • w Javie działa już switch po stringach więc możesz drabinkę ifów zamienić na swicth (dla enuma zawszedziałał)

powodzenia

UPDATE
I pamiętaj. Nigdy, ale to nigdy nie używaj double do trzymania pieniędzy, bo się wszystko rozjeżdża na zaokrągleniach. Od tego jest BigDecimal

J8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 12
0

OK , dzięki biorę się do pracy:)

BU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 422
0

Od jakiegoś czasu zastanawiam się, dlaczego wiele osób woli napisać "mam pytanie" w zamian za postawienie po pytaniu znaku zapytania, który i tak jest zastąpiony kropką, więc zaoszczędzony czas jest marnowany na inny znak. Nie próbuję być złośliwy, ale ten rodzaj myślenia jest dla mnie interesujący i zastanawiam się, czy kryje się za tym jakiś konkretny cel.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.