Где проблема в калькуляторе?

125
16 февраля 2022, 23:30
package com.company;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    System.out.println("Введите что хотите сделать.");
        if(scan.next().equals("+")){
        System.out.println("Введите первое число.");
        int num1 = scan.nextInt();
        System.out.println("Введите второе число.");
        int num2 = scan.nextInt();
        System.out.println("Результат: "+(num1+num2));
        }
        if(scan.next().equals("-")){
            System.out.println("Введите первое число.");
            int num1 = scan.nextInt();
            System.out.println("Введите второе число.");
            int num2 = scan.nextInt();
            System.out.println("Результат: "+(num1-num2));
        }
        if(scan.next().equals("*")){
            System.out.println("Введите первое число.");
            float num1 = scan.nextInt();
            System.out.println("Введите второе число.");
            float num2 = scan.nextInt();
            System.out.println("Результат: "+(num1*num2));
        }
        if(scan.next().equals("/")){
            System.out.println("Введите первое число.");
            float num1 = scan.nextInt();
            System.out.println("Введите второе число.");
            float num2 = scan.nextInt();
            System.out.println("Результат: "+(num1/num2));
        }
    }
}

Где сдесь проблема? Если например надо "-". То надо два раза вписать. Оно именно читает строку. Если в первой не плюс то оно ничего не делает. Если во второй не минус то не делает и т.д.

Answer 1

Для "что хотите сделать" scan.next надо вызывать только один раз.

    String operation = scan.next();
    if (operation.equals("+")){
      ...
Answer 2

Можно так

 public static void main(String[] args) {
    Scanner scan = new Scanner( System.in);
    System.out.println("Введите что хотите сделать.");
    String oper = scan.next();
    System.out.println("Введите первое число.");
    int num1 = scan.nextInt();
    System.out.println("Введите второе число.");
    int num2 = scan.nextInt();
    float result = 0;
    if(oper.equals("+")){
        result = num1+num2;
    }else if(oper.equals("-")){
        result = num1-num2;
    }else if(oper.equals("*")){
        result = num1*num2;
    }else if(oper.equals("/")){
        result = num1/num2;
    }
    System.out.println("Результат: "+result);
}
Answer 3

еще один вариант решения

class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.println("Выберите действие +, - , / , *");
    String oper = sc.nextLine();
    System.out.println("Введите первое число");
int a = sc.nextInt();
System.out.println("Введите первое число");
int b = sc.nextInt();
switch (oper) {
case "+":
System.out.println("Результат "+ a + " + " + b + " ровно " + (a+b));
break;
case "-":
System.out.println("Результат "+ a + " - " + b + " ровно " + (a-b));
break;
case "/":
System.out.println("Результат "+ a + " / " + b + " ровно " + (a/b));
break;
case "*":
System.out.println("Результат "+ a + " * " + b + " ровно " + (a*b));
break;
default:
System.out.println("не правильный выбор");
main(args);
}
  }
}
READ ALSO
JDK и Android Studio/Kotlin (Linux Mint 19.3)

JDK и Android Studio/Kotlin (Linux Mint 19.3)

товарищиОбъясните, кто нибудь, какой JDK нужен сейчас, для разработки под Android? В интернетах у каждого свое мнение

105
Не работает аутентификация в Postman

Не работает аутентификация в Postman

Имеется метод, в котором есть аннотация аутентификации

106
Переход на следующую или предыдущую неделю

Переход на следующую или предыдущую неделю

Есть активити с двумя кнопками "<<" и ">>"Также есть Calendar calendar = Calendar

88
В чем ошибка такой записи на PHP?

В чем ошибка такой записи на PHP?

При таком условии выводит "GOOD"Не понятно почему

81