Задача "Операции между числа" - Java, programing basics, тема 8
Условие:
6. Операции между числа
Напишете програма, която чете две цели числа (N1 и N2) и оператор, с който да се извърши дадена
математическа операция с тях. Възможните операции са: Събиране(+), Изваждане(-), Умножение(*),
Деление(/) и Модулно деление(%). При събиране, изваждане и умножение на конзолата трябва да се
отпечатат резултата и дали той е четен или нечетен. При обикновеното деление – резултата. При модулното
деление – остатъка. Трябва да се има предвид, че делителят може да е равен на 0(нула), а на нула не се
дели. В този случай трябва да се отпечата специално съобщениe.
Вход
От конзолата се прочитат 3 реда, въведени от потребителя:
N1 – цяло число в интервала [0...40 000]
N2 – цяло число в интервала [0...40 000]
Оператор – един символ измеду: „+“, „-“, „*“, „/“, „%“
Изход
Да се отпечата на конзолата един ред:
Ако операцията е събиране, изваждене или умножение:
o „{N1} {оператор} {N2} = {резултат} – {even/odd}“
Ако операцията е деление:
o „{N1} / {N2} = {резултат}“ – резултатът е фораматиран до вторият знак след дес.запетая
Ако операцията е модулно деление:
o „{N1} % {N2} = {остатък}“
В случай на деление с 0(нула):
o „Cannot divide {N1} by zero“
В Judge задачата ми дава 90/100, като имам грешка на първия(ненулев) тест. Ето го моето решение:
import java.util.Scanner; public class OperationsBetweenNumbers { public static void main(String[] args) { Scanner scan = new Scanner(System.in); double num1 = Double.parseDouble(scan.nextLine()); double num2 = Double.parseDouble(scan.nextLine()); double result; String symbol = scan.nextLine(); switch (symbol) { case ("+"): result = num1 + num2; System.out.printf("%.0f", num1); System.out.print(" + "); System.out.printf("%.0f", num2); System.out.print(" = "); System.out.printf("%.0f", result); System.out.print(" - "); if (result % 2 == 0) { System.out.println("even"); } else { System.out.println("odd"); } break; case ("-"): result = num1 - num2; System.out.printf("%.0f", num1); System.out.print(" - "); System.out.printf("%.0f", num2); System.out.print(" = "); System.out.printf("%.0f", result); System.out.print(" - "); if (result % 2 == 0) { System.out.println("even"); } else { System.out.println("odd"); } break; case ("*"): result = num1 * num2; System.out.printf("%.0f", num1); System.out.print(" * "); System.out.printf("%.0f", num2); System.out.print(" = "); System.out.printf("%.0f", result); System.out.print(" - "); if (result % 2 == 0) { System.out.println("even"); } else { System.out.println("odd"); } break; case ("/"): result = num1 / num2; if (num2 != 0) { if (result % 1 == 0) { System.out.printf("%.0f", num1); System.out.print(" / "); System.out.printf("%.0f", num2); System.out.print(" = "); System.out.printf("%.0f", result); System.out.println(""); } else { System.out.printf("%.0f", num1); System.out.print(" / "); System.out.printf("%.0f", num2); System.out.print(" = "); System.out.printf("%.2f", result); System.out.println(""); } } else { System.out.print("Cannot divide "); System.out.printf("%.0f", num1); System.out.println(" by zero"); } break; case ("%"): result = num1 % num2; if (num2 != 0) { System.out.printf("%.0f", num1); System.out.print(" % "); System.out.printf("%.0f", num2); System.out.print(" = "); System.out.printf("%.0f", result); } else { System.out.print("Cannot divide "); System.out.printf("%.0f", num1); System.out.println(" by zero"); } break; } } }
Мерси! Аз друго си имах в главата.