import java.util.Scanner;
import java.util.InputMismatchException;
public class divide {
public static void main(String[] args) {
Scanner kb = new Scanner (System.in);
int a,b;
try{
System.out.println("enter 2 number ");
a = kb.nextInt();
b = kb.nextInt();
int c = a/b;
System.out.println("div="+c);
}
catch(ArithmeticException e)
{
System.out.println("please enter non 0 in deno");
}
catch (InputMismatchException e2)
{
System.out.println("please input int only");
System.exit(0);
}
int d= a+b;
System.out.println("sum="+d);
}
}
错误
divide.java:38:错误:变量a可能尚未初始化 int d = a + b; ^ divide.java:38:错误:变量b可能尚未初始化 int d = a + b;
答案 0 :(得分:2)
您需要初始化变量
int a =0,b=0;
答案 1 :(得分:1)
请记住,try / catch块的工作方式,并不能保证其中的语句实际运行。 (因为可能存在错误,导致它们被跳过。)
因此,当您尝试引用它们时,Java无法保证已定义a和b。在这种情况下,他们总是会,因为你在catch语句中退出。
您可以通过提供初始默认值或将引用代码移动到try块中来解决此问题。
答案 2 :(得分:1)
如果你的 try-catch 无论是什么/如何在阅读时失败,那么变量b永远不会被初始化...... 应用程序跳转到catch块,最后你执行:
int d= a+b;
System.out.println("sum="+d);
在这种情况下b
的价值应该是什么?
声明并初始化变量......
Scanner kb = new Scanner (System.in);
int a = 0;
int b = 0;