Java , użycie Scannera.

0

Hej,

Mam jakiś przykładowy program, który posiada 2 konta (bankowe). Czyli mam 2 obiekty.
Do tego mam metody, które pozwalają na to aby nadać obiektowi imię, dodać coś do konta(pieniądze). Kod poniżej:
Ale zamiast dodawać pojedynczo do danego obiektu pieniądze chciałbym to zrobić w taki sposób, że. Załączam metodę i wtedy dobieram:
dla konta 1,2,3 dodaj 50 zeta, do konta 4,5,6 dodaj 100 itd.
Wiem jak mniej więcej taką metodę napisać, ale nie wiem jak takie coś załączyć. Czy muszę stworzyć jeszcze jeden obiekt który nie będzie kontem bankowym ?



package com.company;

import java.util.Scanner;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc1 = new Scanner(System.in);
		Account acc1 = new Account();
		Account acc2 = new Account();

		acc1.setName("Ernest");
		acc2.setName("Mark");
		acc1.setMoney(50);
		acc1.deposit(50);
		acc1.withdraw(300);
	}
}


public class Account {
    private String name;
    private double money;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getMoney() {
        return money;
    }


    public void setMoney(double money) {
        System.out.println("Enter how much money you want to add: ");
        if (money <=0 ) {
            System.out.println("You can only deposit more than 0");
        }
        else {
            this.money = this.money + money;
        }
    }

    public void withdraw(double money) {
        if (money > this.money) {
            System.out.println("You do not have that much money");
        } else {
            this.money = this.money - money;
            this.showBalance();
        }
    }
    public void deposit(double money) {
        this.money = this.money + money;
        this.showBalance();
    }
    public void showBalance() {
        System.out.println("You have: " + this.money);
    }
    public void transfer(double money) {
        

    }


}
0

Możesz użyć pętli, żeby czekać na input od użytkownika: https://stackoverflow.com/questions/14720662/java-loop-user-input-from-scanner

0

Dzięki, pomocny link.
Ale jak mogę dodać tak pieniądze do danego obiektu w jakiejś metodzie aby to zostało zapisane w pamięci ?
Bo później jak już po dodawaniu użyć metody który sprawdzi ile jakiś obiekt ma na koncie ?

0

Słuszna obserwacja :) W tym celu potrzebujesz mieć możliwość dostępu do Account o danym identyfikatorze, który wczytasz. Proponuję po stworzeniu Accounta zapisać go do takiej waśnie „bazy kont”. Możesz zaimplementować to używając HashMapy, w której kluczem byłby account.id, a wartością odpowiadający obiekt Account. Możesz też użyć innej struktury danych (czyt. kolekcji), ale wówczas wyszukiwanie po id będzie mało efektywne (wiesz dlaczego?)

0

Możesz też użyć innej struktury danych (czyt. kolekcji), ale wówczas wyszukiwanie po id będzie mało efektywne (wiesz dlaczego? >
Nie mam pojęcia dlaczego.

Czy to o czym mówisz ma wyglądać tak jak poniżej ? Bo szczerze to mi się to coś nie widzi.

package com.company;

import java.util.Scanner;
import java.util.HashMap;


public class Main {
	public static void main(String[] args) {
		Scanner sc1 = new Scanner(System.in);
		Account acc1 = new Account();
		Account acc2 = new Account();
		HashMap<String, String> accounts = new HashMap<String, String>();
		accounts.put("acc1", "acc2");



	}
}
```Java

Albo coś takiego: 

```Java
public class Main {
	public static void main(String[] args) {
		Scanner sc1 = new Scanner(System.in);
		Account acc1 = new Account();
		Account acc2 = new Account();
		HashMap<Integer, String> accounts = new HashMap<Integer, String>();
		accounts.put(1, "acc1");
		accounts.put(2, "acc2");
		accounts.put(3, "acc3");
		System.out.println(accounts);
```Java
0

ok,
Wymyśliłem coś takiego. Po prostu teraz nie wiem jak wybrać w pętli jakieś konto a później dodać do wybranego konta wpisaną kwotę.

package com.company;

import java.util.Scanner;
import java.util.HashMap;

public class Main {
	public static void main(String[] args) {
		Scanner sc1 = new Scanner(System.in);
		Account acc1 = new Account();
		Account acc2 = new Account();
		HashMap<Integer, String> accounts = new HashMap<Integer, String>();
		accounts.put(1, "acc1");
		accounts.put(2, "acc2");
		accounts.put(3, "acc3");
		acc1.showBalance();
	}
}

public class Account {
    private String name;
    private double money;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getMoney() {
        return money;
    }

    public void setMoney(Scanner s, Account n, double money) {
        System.out.println("Choose an account: ");
        **//how to choose an account ?**
        System.out.println("Enter the amount: ");
        if (money <=0 ) {
            System.out.println("You do not have enough money to deposit: ");
        }
        else {
            this.money = money + this.money;
        }
    }
```Java
0

Okej, po pierwsze - masz złą mapę. Ona nie ma żadnej wartości. Napisz po czym chcesz wskazywać na dane konto? Po jego nazwie? Po id? Nazwa metody mi nie pasuje - nie lepiej jakieś addMoney()? ;) I trochę bez sensu przekazywać parametr typu Account w metodzie, która wywoływana jest na konkretnym koncie. Czasami dobrze jest wywalić cały kod i napisać od nowa, przemyśleć to dokładnie itd. I to bym tu zalecał bo straszny miszmasz jest ;p

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