使用Try and Catch但无法重试

时间:2018-03-29 23:02:40

标签: java try-catch

我使用try-catch来捕获并显示重试消息,但错误仍然存​​在,它只显示消息但不给我们重试的机会。我不明白为什么。

import java.util.Scanner;

public class F_to_Celsius {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println(
                "Bonjoir lol \n Convertire de Celsius à Fahrenheit tape 1 \n Convertire de Fahrenheit à Celsius tape 2 ");
        int choix;
        try {
            choix = sc.nextInt();
        } catch (java.util.InputMismatchException e) {
            System.out.println("Caractere non numerique § erreur ");
            choix = sc.nextInt();
        }
        System.out.println("D'accord");
        if (choix != 1 | choix != 2) {
            while (choix != 1 && choix != 2) {
                System.out.println("Reassayez , tapez soit 1 soit 2 !!!!!");
                try {
                    choix = sc.nextInt();
                } catch (java.util.InputMismatchException e) {
                    System.out.println("Caractere non numerique 1 ou 2");
                    choix = sc.nextInt();
                }

            }
        }

        if (choix == 1) {
            System.out.println("Entrez la temperature en Celsius ");
            int tempc = sc.nextInt();
            System.out.println(celtofar(tempc) + " F°");
        } else if (choix == 2) {
            System.out.println("Entrez la temperature en Fahrenheit ");
            int tempf = sc.nextInt();
            System.out.println(fartocel(tempf) + "C°");
        }
    }

    public static double celtofar(int x) {
        double y = (x * 1.8) + 32;
        return y;

    }

    public static double fartocel(int x) {
        double y = (x - 32) / 1.8;
        return y;
    }
}

1 个答案:

答案 0 :(得分:0)

将您的代码段丢弃到IntelliJ中,它立即警告我您的if (choix != 1 | choix != 2) {行始终为true。因为你在这里使用了一个按位|两种情况,其中一种情况永远都是真的......好吧,它总是如此。我想你可以完全删除那个条件,让while循环运行0次或更多次。