Main.java (Главный класс)
package com.indie;
import java.util.InputMismatchException;
import java.util.Scanner;
import static com.indie.Operations.*;
public class Main {
private static double Number1;
private static double Number2;
private static double Total;
private static String Symbol;
private static boolean noError;
private static boolean exceptioncaught;
public static void main(String[] args) throws InterruptedException{
noError = false;
while (!noError) {
exceptioncaught = false;
while (!exceptioncaught) {
Scanner scanner = new Scanner(System.in);
System.out.println("Enter your number:");
try {
Number1 = scanner.nextDouble();
} catch (InputMismatchException ex) {
System.out.println();
System.out.println("TypeERROR: You didn't input a vaild number!");
exceptioncaught = true;
System.out.println();
Thread.sleep(3000);
break;
}
System.out.println("What do you want to do:");
Symbol = scanner.next();
if (!Symbol.contains("+") && !Symbol.contains("-") && !Symbol.contains("*") && !Symbol.contains("x") && !Symbol.contains("/") && !Symbol.contains("÷")) {
System.out.println();
System.out.println("TypeERROR: You didn't input a valid symbol!");
exceptioncaught = true;
System.out.println();
Thread.sleep(3000);
break;
}
System.out.println("Enter your second number:");
try {
Number1 = scanner.nextDouble();
} catch (InputMismatchException ex) {
System.out.println();
System.out.println("TypeERROR: You didn't input a vaild number!");
exceptioncaught = true;
System.out.println();
Thread.sleep(3000);
break;
}
System.out.println();
if (Symbol.contains("+")) {
Total = Add(Number1, Number2);
noError = true;
break;
} else if (Symbol.contains("-")) {
Total = Subtract(Number1, Number2);
noError = true;
break;
} else if (Symbol.contains("*") || Symbol.contains("x")) {
Total = Multiply(Number1, Number2);
noError = true;
break;
} else if (Symbol.contains("/") || Symbol.contains("÷")) {
Total = Divide(Number1, Number2);
noError = true;
break;
}
}
}
System.out.println(String.valueOf(Number1)
+Symbol+String.valueOf(Number2)
+" = "+String.valueOf(Total));
}
}
Operations.java (2-й класс)
package com.indie;
public class Operations {
public static double Add(double x, double y) { return x+y; }
public static double Subtract(double x, double y){ return x-y; }
public static double Multiply(double x, double y){ return x*y; }
public static double Divide(double x, double y){ return x/y; }
}
Как это исправить? Как получилось 2.0 + 20.0 = 2.0? Пожалуйста помоги. Есть ли способ предотвратить такие результаты?
Other results:
result 1:
Enter your number:
2
What do you want to do:
+5
Enter your second number:
56
56.0+50.0=56.0
result 2:
Enter your number:
1
What do you want to do:
+1
Enter your second number:
1
1.0+10.0=1.0
"Enter your number:", за которым следуют Number1 = scanner.nextDouble(); и "Enter your second number:", за которым следует Number1 = scanner.nextDouble();, должны быть довольно очевидной опечаткой, которую вы должны были заметить сами. Хотя, возможно, не единственный.
Я знаю, что это не связано с вопросом, но инженер Java использует имена переменных в нижнем регистре.
Обмен стеками обзора кода может помочь вам codereview.stackexchange.com




В этой части кода вы должны изменить это:
...
System.out.println("Enter your second number:");
try {
Number1 = scanner.nextDouble();
}
...
к этому:
...
System.out.println("Enter your second number:");
try {
Number2 = scanner.nextDouble();
}
...
Вы никогда не меняете значение Number2 в своем коде.
Большое спасибо, я изменил это, но я все еще получаю странные результаты, если переменная символа содержит число после фактического введенного оператора ... как бы то ни было исправить это?
Вам необходимо ограничить ввод таким образом, чтобы можно было вводить только символы вместо числовой строки.
Что-то хорошо иметь вторую пару глаз В вашем коде вы никогда не присваиваете значение номеру 2
System.out.println("Enter your second number:");
try {
Number2 = scanner.nextDouble();
Вы должны потратить некоторое время на отладку своего домашнего задания. Немного побороться - это нормально.