Я не могу понять, как правильно использовать "попробовать" в JAVA - PullRequest
0 голосов
/ 27 апреля 2020

Я должен обработать ошибку «InputMismatchException» в «приложении», которое вычисляет числа в зависимости от того, какой оператор пользователя вводит. Я использую там в своем коде «попробовать», но после этого мои операции «собирать, сокращать, делить, умножать» больше не работают. Где я должен использовать эту «попытку» в моем коде, если пользователь вводит число, например, когда ему нужно ввести оператор и обработать ошибку, не отказывая при сборке и продолжая спрашивать пользователя, что он хочет сделать.

package t3;

import java.util.InputMismatchException;
import java.util.Scanner;

public class T3 {


public static void main(String[] args) {
    String answer;
    do{

    Scanner ab = new Scanner(System.in);
    System.out.println("Input what operation do you want to do!");
    System.out.println("For gather: \"+\"");
    System.out.println("For reduction: \"-\"");
    System.out.println("For division: \"/\"");
    System.out.println("For multiplication: \"*\"");
    System.out.print(":");

    String operation = ab.nextLine();


    try{
    System.out.print("Input first number: ");
    int nr1 = ab.nextInt();
    System.out.print("Input second number: ");
    int nr2 = ab.nextInt();

    int gather, reduction, division, multiplication;
    gather=nr1+nr2;
    reduction=nr1-nr2;
    division=nr1/nr2;
    multiplication=nr1*nr2;
    }
    catch (InputMismatchException e)
    { System.out.println(" ------------------------------ You have to choose an operation ------------------------------"); }
    switch (operation){
        case "+" : System.out.println("The result is: " +gather);
        break;
        case "-" : System.out.println("The result is: " +reduction);
        break;
        case "/" : System.out.println("The result is: " +division);
        break;
        case "*" : System.out.println("The result is: " +multiplication);
        break;
        default : System.out.println(" !!!! You haven't chosen an operation...  \n **** Input smth like: \n+ -> gather\n- -> reduction\n/ -> division\n* -> multiplication");  
    } 

                System.out.println("Do you keep going? Yes/ No");
                Scanner tx = new Scanner(System.in);
                answer= tx.nextLine();
    }

    while(answer.equalsIgnoreCase("Yes"));
}
}

РЕДАКТИРОВАТЬ: после того, как я использую там "попробовать", это дает мне эту ошибку, если я положил нормальные входы: Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous tree type: <any> at tema2.Tema2.main(Tema2.java:104) C:\Users\VALENTIN-CLAUDIUCOST\AppData\Local\NetBeans\Cache\11.3\executor-snippets\run.xml:111: The following error occurred while executing this line: C:\Users\VALENTIN-CLAUDIUCOST\AppData\Local\NetBeans\Cache\11.3\executor-snippets\run.xml:94: Java returned: 1 BUILD FAILED (total time: 2 seconds)

1 Ответ

0 голосов
/ 27 апреля 2020
import java.util.InputMismatchException;
import java.util.Scanner;

public class T3 {

    public static void main(String[] args) {
        String answer;
        do {

            Scanner ab = new Scanner(System.in);
            System.out.println("Input what operation do you want to do!");
            System.out.println("For gather: \"+\"");
            System.out.println("For reduction: \"-\"");
            System.out.println("For division: \"/\"");
            System.out.println("For multiplication: \"*\"");
            System.out.print(":");

            String operation = ab.nextLine();


            try {
                System.out.print("Input first number: ");
                int nr1 = ab.nextInt();
                System.out.print("Input second number: ");
                int nr2 = ab.nextInt();

                int gather, reduction, division, multiplication;
                gather = nr1 + nr2;
                reduction = nr1 - nr2;
                division = nr1 / nr2;
                multiplication = nr1 * nr2;
                switch (operation) {
                    case "+":
                        System.out.println("The result is: " + gather);
                        break;
                    case "-":
                        System.out.println("The result is: " + reduction);
                        break;
                    case "/":
                        System.out.println("The result is: " + division);
                        break;
                    case "*":
                        System.out.println("The result is: " + multiplication);
                        break;
                    default:
                        System.out.println(" !!!! You haven't chosen an operation...  \n **** Input smth like: \n+ -> gather\n- -> reduction\n/ -> division\n* -> multiplication");
                }
            } catch (InputMismatchException e) {
                System.out.println(" ------------------------------ You have to choose an operation ------------------------------");
            }


            System.out.println("Do you keep going? Yes/ No");
            Scanner tx = new Scanner(System.in);
            answer = tx.nextLine();
        }

        while (answer.equalsIgnoreCase("Yes"));
    }
}

Исправлено форматирование кода, вам нужно сместить switch внутри блока try, так как ему нужен доступ к объявленной внутри переменной.

...