É possível criar método para manipulação de exceção com a entrada de casal que pode inicializar variável em java?

Colinovsky:

Eu estou querendo saber se é possível criar método para o tratamento de exceção como este:

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        do {
            try {
                double a = in.nextDouble();
                double b = in.nextDouble();
                double c = in.nextDouble();

                // some code that works with a, b and c variables
            }
            catch(java.util.InputMismatchException exc) {
                System.out.println("Wrong input.");
                in.next();
            }
        } while(true);
    }

Então eu posso input algumas variáveis ​​de teclado, se não é o dobro, em seguida, ele diz que "a entrada errada." e quer que você digite novamente. É possível criar método que irá lidar com tudo isso? Será que é mesmo possível em Java para criar método que pode funcionar assim:

double a, b, c;
myMethodTest(a);

e seria realmente trabalhar da mesma forma como o primeiro código? Como fazer isso, se possível? Eu sei que há um erro que diz "variável pode não ter sido inicializado", mas há uma maneira de contornar isso? Pode método de inicializar a variável que eu coloquei no (), como myMethodTest(a)poderia inicializar ae fazer todo o tratamento de exceção para mim?

Arvind Kumar Avinash:

Fazê-lo da seguinte forma:

import java.util.Scanner;

public class Main {
    public static void main(String[] argv) {
        Scanner in = new Scanner(System.in);
        double a, b, c;
        a = getDouble(in, "Enter the value of a: ");
        b = getDouble(in, "Enter the value of b: ");
        c = getDouble(in, "Enter the value of c: ");
        System.out.println(a + ", " + b + ", " + c);
    }

    static double getDouble(Scanner in, String inputMessage) {
        double n = 0;
        boolean valid = true;
        do {
            valid = true;
            System.out.print(inputMessage);
            try {
                n = Double.parseDouble(in.nextLine());
            } catch (NullPointerException | NumberFormatException e) {
                System.out.println("Invalid input. Try again");
                valid = false;
            }
        } while (!valid);
        return n;
    }
}

Uma corrida de amostra:

Enter the value of a: a
Invalid input. Try again
Enter the value of a: abc
Invalid input. Try again
Enter the value of a: 10
Enter the value of b: 10.5
Enter the value of c: hello
Invalid input. Try again
Enter the value of c: 20
10.0, 10.5, 20.0

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=292575&siteId=1
Recomendado
Clasificación