Задача "Операции между числа" - 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;
}
}
}
Мерси! Аз друго си имах в главата.