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