java程序编译出错与处理异常有关的。

来源:百度知道 编辑:UC知道 时间:2024/06/07 12:52:51
下面为一个求阶乘的程序,当输入的数为负数时就会报出我自己定义的一个异常,编译就出了问题。这个程序在我把所有处理异常的语句都删除时是正确的。现在没分了,再追加分!
class jieCheng{
static int jc(int n) throws numisminus
{if(n<0)
{
throw new numisminus("输入的数不能为负数!");
}
int jc=1;
while(n!=0){
jc=jc*n--;
}
return jc;
}
public static void main(String args[]){
try{
int a=Integer.parseInt(args[0]);
int jc=jieCheng.jc(a);
}catch(numisminus e){
//System.out.println(e.toString());
e.printStackTrace();
//System.out.println("can't be minus!");
}
System.out.println("阶乘是:"+jc);//把这行删除时又能通过编译?
}
}

class numisminus extends Exception{
numisminus(String str){
super(str);}
}

F:\>javac jieCheng.java
jieCheng.java:23: cannot find symbol
symbol : variable jc
location: class jieCheng
System.out.println("阶乘是:&quo

try{}块里的变量外面不可用
所以变量的声明要放在try外面
改为:

public static void main(String args[]){
int jc = 1;
try{
int a=Integer.parseInt(args[0]);
jc=jieCheng.jc(a);
}
即可

============================
在catch里面结束程序
改为:
catch(numisminus e){
//System.out.println(e.toString());
e.printStackTrace();
System.exit(0);//结束程序
//System.out.println("can't be minus!");
}

int jc 是在try 语句块中定义的