Професионална програма
Loading...
+ Нов въпрос
zdravkostov avatar zdravkostov 2 Точки

Задача "Операции между числа" - 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;

        }

    }
}
Тагове:
0
Programming Basics
A.Neshkova avatar A.Neshkova 45 Точки
Best Answer

Имаше една излишна проверка при  "/"

Ето твоя код + махнатата проверка 100/100 в judge ;)

https://pastebin.com/JitTS8Tt

0
zdravkostov avatar zdravkostov 2 Точки

Мерси! Аз друго си имах в главата.

1
01/08/2020 22:21:07