Я написал программу, которая «покупает» и «продает» биткойны, хотя моя функция покупки дает неверные математические результаты.
В моей программе у меня есть 20000 долларов (двойной доллар) и биткойн (который стоит 4000 долларов.
Все, что он должен сделать, это вычесть, сколько биткойнов вы покупаете у своего доллара.
Каждый раз, когда я использую функцию покупки (вход 1), чтобы купить как минимум 2 за один раз, он срабатывает один раз, а затем неверно рассчитывается. Он идет от 20000 до 12000 (правильно), а затем от 12000 до -4000Я не могу понять, что не так с моим кодом. Я знаю, что ответ, вероятно, прост, но я чувствую, что перепробовал все.
import java.util.*;
public class P3a {
public static void main(String[] args) {
Dates d = new Dates();
String s = d.getDate();
System.out.println("Date is" + s);
W3 mywallet = new W3();
Scanner myscanner = new Scanner(System.in);
double buy = 0.0;
int choice = 0;
double bitcoin = 4000;
double USD = 20000;
while (choice != 5) {
System.out.println("Welcome! Enter a command. \n"
+ "Enter 1) Buy Bitcoin \n"
+ "Enter 2) Sell Bitcoin \n"
+ "Enter 3) Print Balance \n"
+ "Enter 4) Print History \n"
+ "ENTER 5) Exit Program\n");
choice = myscanner.nextInt();
if (choice == 1) {
System.out.println("How many? ");
buy = myscanner.nextDouble();
mywallet.add(buy);
bitcoin = bitcoin * buy;
USD = USD - bitcoin;
System.out.println("you have bought:" + mywallet.numcoins);
System.out.println(USD);
} else if (choice == 2 && USD >= bitcoin) {
System.out.println("How many?");
buy = myscanner.nextDouble();
mywallet.subtract(buy);
System.out.println("you have sold:" + mywallet.numcoins);
USD = USD + bitcoin;
System.out.println(USD);
} else if (choice == 3) {
System.out.println("Balance:" + mywallet.numcoins);
} else if (choice == 4) {
System.out.println("Print Transaction history");
} else if (choice == 5) {
// exit
break;
}
}
System.out.println("Bye");
}
}