#arraylist
#arraylist
Вопрос:
Это мой объект coin, который я использую в arraylist в моем коде драйвера.
public class Coin
{
private int side;
private double value;
private String name;
public Coin()
{
side = 1;
value = 0.25;
name = "Quarter";
}
public Coin(String iname, double ivalue)
{
name = iname;
value = ivalue;
flip();
}
public String getName()
{
return name;
}
public double getValue()
{
return value;
}
public void setName(String iname)
{
name = iname;
}
public void setValue(double ivalue)
{
value = ivalue;
}
public String flip()
{
side = (int)(Math.random()* 2);
if (side == 0)
return "Heads";
else
return "Tails";
}
public String toString()
{ String outside = "";
if (side == 0)
outside = "Heads";
else
outside = "Tails";
return "Coin name " name "Coin value: " value " " outside;
}
}
Это мой класс coindriver, здесь у меня проблема, из-за которой я не могу вернуть значение обновленного списка кошельков.
import java.util.List;
import java.util.Scanner;
import java.util.ArrayList;
public class CoinDriver
{
private List<Coin> Wallet;
public CoinDriver()
{
Wallet = new ArrayList<>();
}
public static void main(String[] args)
{
int choice = 0;
CoinDriver Wallet = new CoinDriver();
Scanner scanner = new Scanner(System.in);
while (choice != 2)
{
System.out.println("1 Purchase an item 2 Calculate money in wallet and end program");
choice = scanner.nextInt();
Wallet.InputCoin();
if (choice == 1)
Wallet.PurchaseItem();
System.out.println("Net amount in your wallet is " Wallet.WalletValue());
}
}
void InputCoin()
{
Coin Penny = new Coin ("Penny",0.01);
Coin Dime = new Coin ("Dime", 0.10);
Coin Dollar = new Coin ("Dollar",1.00);
Coin Twenty = new Coin ("Twenty", 20.00);
Wallet.add(Penny);
Wallet.add(Dime);
Wallet.add(Dollar);
Wallet.add(Twenty);
Wallet.add(Penny);
Wallet.add(Dime);
Wallet.add(Dollar);
Wallet.add(Twenty);
Wallet.add(Penny);
Wallet.add(Dime);
Wallet.add(Dollar);
Wallet.add(Twenty);
Wallet.add(Penny);
Wallet.add(Dime);
Wallet.add(Dollar);
Wallet.add(Twenty);
Wallet.add(Penny);
Wallet.add(Dime);
Wallet.add(Dollar);
Wallet.add(Twenty);
Wallet.add(Penny);
Wallet.add(Dime);
Wallet.add(Dollar);
Wallet.add(Penny);
Wallet.add(Dime);
Wallet.add(Dollar);
Wallet.add(Penny);
Wallet.add(Dime);
Wallet.add(Dollar);
Wallet.add(Penny);
Wallet.add(Dime);
Wallet.add(Dollar);
}
double WalletValue()
{
double sum = 0;
for(int x = 1; x < Wallet.size(); x )
{
sum = Wallet.get(x).getValue();
}
return sum;
}
void PurchaseItem()
{
Coin Penny = new Coin ("Penny",0.01);
Coin Dime = new Coin ("Dime", 0.10);
Coin Dollar = new Coin ("Dollar",1.00);
Coin Twenty = new Coin ("Twenty", 20.00);
Scanner scanner = new Scanner(System.in);
System.out.println("Enter the cost of item you want to purchase: ");
double price = scanner.nextDouble();
double total = WalletValue();
int round = (int) Math.round(price);
int calctwenty = round/20;
int calcdollar = round - calctwenty*20;
double calcdime = price%1;
double rounddime = (Math.round(calcdime))/10;
double calcpenny = (price*10)%1;
double roundpenny = (Math.round(calcpenny));
if (price > total)
{
System.out.println("Insufficient money, cannot purchase");
return;
}
if (calctwenty > 0)
{
for (int i = 0; i < calctwenty; i )
{
Wallet.remove(Twenty);
}
}
if (calcdollar > 0)
{
for (int j = 0; j < calcdollar; j )
{
Wallet.remove(Dollar);
}
}
if (rounddime > 0)
{
for( int y = 0; y < rounddime; y )
{
Wallet.remove(Dime);
}
}
if (rounddime > 0)
{
for ( int p = 0; p < roundpenny; p )
{
Wallet.remove(Penny);
}
}
WalletValue();
}
}
Я хочу, чтобы код возвращал обновленные значения после совершения покупки и удаления объектов. Однако на практике код по-прежнему возвращает начальное значение кошелька. Пожалуйста, помогите, спасибо
Комментарии:
1. В чем именно проблема?
2. Я не совсем уверен, но я думаю, что это происходит в моем методе void PurchaseItem, в котором в конце я использую метод WalletValue(), и он по-прежнему возвращает начальную сумму денег без обновления
3. 1 Купите товар 2 Подсчитайте деньги в кошельке и завершите программу 1 Введите стоимость товара, который вы хотите приобрести: 20 Чистая сумма в вашем кошельке составляет 109,98 1 Купите товар 2 Подсчитайте деньги в кошельке и завершите программу 2 Чистая сумма в вашем кошельке составляет 219,96999999999989 (это то, что происходит, когда я пытаюсьзапустите программу)