В настоящее время я работаю над простым java-проектом, который конвертирует выбранную валюту в выбранную валюту. Кажется, у меня проблема с операторами if/elseif, потому что всякий раз, когда я запускаю метод для выполнения соответствующих математических вычислений, исходная переменная остается прежней. Первоначально я попытался запустить логическую операцию со строкой, введенной пользователем («USD», «EUR») с помощью метода .equals, но я столкнулся с той же проблемой.Java - Конвертация валюты с IF/ElSEIF в классе
Вот часть моего метода, когда я думаю, что ошибка возникает (весь метод для ясности добавлен **):
public double doMath(double USD, double CAD, double GBP, double YEN, double EUR, double CHF, int ogCurrency, int newCurrency, double howMuch){
if (ogCurrency == 2){
if (newCurrency == 1){
howMuch = howMuch * CAD;
}
else if (newCurrency == 3){
howMuch = howMuch * GBP;
}
else if (newCurrency == 6){
howMuch = howMuch * YEN;
}
else if (newCurrency == 4){
howMuch = howMuch * EUR;
}
else if (newCurrency == 5){
howMuch = howMuch * CHF;
}
}
else if (ogCurrency == 1){
howMuch = howMuch/CAD;
if (newCurrency == 2){
howMuch = howMuch * USD;
}
else if (newCurrency == 3){
howMuch = howMuch * GBP;
}
else if (newCurrency == 6){
howMuch = howMuch * YEN;
}
else if (newCurrency == 4){
howMuch = howMuch * EUR;
}
else if (newCurrency == 5){
howMuch = howMuch * CHF;
}
}
else if (ogCurrency == 3){
howMuch = howMuch/GBP;
if (newCurrency == 1){
howMuch = howMuch * USD;
}
else if (newCurrency == 2){
howMuch = howMuch * CAD;
}
else if (newCurrency == 6){
howMuch = howMuch * YEN;
}
else if (newCurrency == 4){
howMuch = howMuch * EUR;
}
else if (newCurrency == 5){
howMuch = howMuch * CHF;
}
}
else if (ogCurrency == 6){
howMuch = howMuch/YEN;
if (newCurrency == 1){
howMuch = howMuch * USD;
}
else if (newCurrency == 3){
howMuch = howMuch * GBP;
}
else if (newCurrency == 2){
howMuch = howMuch * CAD;
}
else if (newCurrency == 4){
howMuch = howMuch * EUR;
}
else if (newCurrency == 5){
howMuch = howMuch * CHF;
}
}
else if (ogCurrency == 4){
howMuch = howMuch/EUR;
if (newCurrency == 1){
howMuch = howMuch * USD;
}
else if (newCurrency == 3){
howMuch = howMuch * GBP;
}
else if (newCurrency == 6){
howMuch = howMuch * YEN;
}
else if (newCurrency == 2){
howMuch = howMuch * CAD;
}
else if (newCurrency == 5){
howMuch = howMuch * CHF;
}
}
else if (ogCurrency == 5){
howMuch = howMuch/CHF;
if (newCurrency == 1){
howMuch = howMuch * USD;
}
else if (newCurrency == 3){
howMuch = howMuch * GBP;
}
else if (newCurrency == 6){
howMuch = howMuch * YEN;
}
else if (newCurrency == 4){
howMuch = howMuch * EUR;
}
else if (newCurrency == 2){
howMuch = howMuch * CAD;
}
}
/*else{
System.out.println("Something didn't add up");
}*/
return howMuch;
& & основной, если это поможет
public static void main(String[] args) {
double USD = 1.00;
double CAD = 1.31; // canadian dollar
double YEN = 101.20; // jap yen
double GBP = 0.77; // british pound
double EUR = 0.89; // euro
double CHF = 0.97; // swiss franc
// initiate object of class
CurrencyConverter converterBasic;
// assigning default values to fractionsBasic
converterBasic = new CurrencyConverter(1, 1, 1.00);
// new scanner for fetching input, premade class Scanner creating object in to run method(parameters/gets input from System.in)
Scanner in = new Scanner(System.in);
System.out.print("Enter your starting currency #(1: CAD, 2: USD, 3: GBP, 4: EUR, 5: CHF, 6: YEN): ");
int ogCurrency;
ogCurrency = in.nextInt();
converterBasic.setOgCurrency(ogCurrency);
System.out.print("Enter your desired currency please #(1: CAD, 2: USD, 3: GBP, 4: EUR, 5: CHF, 6: YEN): ");
int newCurrency;
newCurrency = in.nextInt();
converterBasic.setNewCurrency(newCurrency);
System.out.print("Enter how much cash you have please: ");
double howMuch;
howMuch = in.nextDouble();
converterBasic.setHowMuch(howMuch);
// use appropriate methods defined in class to compute conversion
converterBasic.doMath(USD, CAD, GBP, YEN, EUR, CHF, ogCurrency, newCurrency, howMuch);
// print appropriate output formatted using printf
System.out.printf(converterBasic.toString());
ли кто-нибудь то, что проблема с этим случайно, это определенно прямо под моим носом. Большое спасибо заранее, я с нетерпением жду вашей мудрости.
как это даже скомпилировано, в вашем doMath нет оператора возврата, вы не добавили полный код –
@JynXXedRabbitFoot извините, но это просто неправильно. Java является чистым басом по значению ([«Когда вызывается метод или конструктор (§15.12), ** значения фактических выражений аргументов инициализируют вновь созданные переменные параметра **, каждый из объявленного типа, перед выполнением тело метода или конструктора. "] (http://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.4.1)). – Turing85