Geçerli giriş ($ 0.05, $ 0.10, $ 0.20, $ 0.50, $ 1.00, $ 2.00, $ 5.00, $ 10.00, $ 20.00, $ 50.00, $ 100.00) alan kod yazmaya çalışıyorum ve herhangi bir geri kalan çıktı veriyor ile çıkış kodu benzer: ". Geçersiz değer tekrar deneyin" Şu anda maalesefSadece geçerli girişleri kabul etmek ve çıktı almak
$38.00 remains to be paid. Insert money: $20.00
You gave $20.00.
$18.00 remains to be paid. Insert money: 3
Invalid value. Try again.
$18.00 remains to be paid. Insert money: $9
Invalid value. Try again.
$18.00 remains to be paid. Insert money: $10.00
You gave $30.00
$8.00 remains to be paid. Insert money: $8.00
Invalid value. Try again.
, ben '3' gibi bir tamsayı girin, bunun bazen "boş bir dize" verir ve bazen çıkışı ama yine İşte benim kod ilgili bölümü var
$18.00 remains to be paid. Insert money: $10.00
You gave $10.00.
$8.00 remains to be paid. Insert money: 4
empty String
$8.00 remains to be paid. Insert money: $2.00
You gave $10.00.
$8.00 remains to be paid. Insert money: 9
empty String
$8.00 remains to be paid. Insert money: 9
Invalid value. Try again.
$8.00 remains to be paid. Insert money: $5.00
You gave $10.00.
$8.00 remains to be paid. Insert money: $2.00
You gave $12.00
$6.00 remains to be paid. Insert money:
yani paidTotal parçası olarak tamsayı değerini alır. Herhangi bir yardım büyük takdir edilecektir! Belirli girişler için Dolar işareti dahil olmadığı için
System.out.print("$" + formatter.format(priceSum) + " remains to be paid. Insert money: ");
String moneyEntered = keyboard.nextLine();
System.out.println("");
String noDollar = moneyEntered.substring(1);
double moneyAsDouble = Double.parseDouble(noDollar);
double paidTotal = 0;
paidTotal += moneyAsDouble;
List validMoney = Arrays.asList("$0.05", "$0.10", "$0.20", "$0.50", "$1.00", "$2.00", "$5.00", "$10.00", "$20.00", "$50.00", "$100.00");
boolean moneyEnteredFound = true;
while(true) {
if (validMoney.contains(moneyEntered)) {
while (paidTotal < priceSum) {
if (validMoney.contains(moneyEntered)) {
System.out.println("You gave $" + formatter.format(paidTotal));
System.out.print("$" + formatter.format(priceSum - paidTotal) + " remains to be paid. Enter coin or note: ");
moneyEntered = keyboard.nextLine();
noDollar = moneyEntered.substring(1);
moneyAsDouble = Double.parseDouble(noDollar);
paidTotal += moneyAsDouble;
} else {
System.out.println("Invalid value. Try again.");
System.out.print("$" + formatter.format(priceSum - paidTotal) + " remains to be paid. Enter coin or note: ");
moneyEntered = keyboard.nextLine();
}
}
}
}
Geri bildiriminiz için teşekkürler! Eğer 'double paidTotal = 0' bırakıp 'moneyAsDouble' değerini eklemezsem, o zaman "$ 0.00" verdiniz. Eğer benim döngülerimin yapısı hakkında biraz bilgi verebilirseniz, bu harika olurdu. – sa4an