当前位置: 代码迷 >> Java相关 >> [求助]命令行参数的传递
  详细解决方案

[求助]命令行参数的传递

热度:285   发布时间:2007-07-09 11:18:52.0
[求助]命令行参数的传递
class Student{
double avg;
int sum=0;
void jisuan(String[] args){
for(int i=0;i<args.length;i++){
sum+=(int)args[i];
}
avg=sum/args.length;
}
void display(){
System.out.println("学员的总成绩为"+sum);
System.out.println("学员的平均成绩为"+avg);
}
}
class Test{
public static void main(String[] args){
Student p=new Student();
p.jisuan(args);
p.display();
}
}

系统提示我不能强转,请问我该怎样改才能实现我代码的功能呢 我的学员成绩是通过命令行参数传过去的 请高手指点 谢谢
搜索更多相关的解决方案: 参数  命令  

----------------解决方案--------------------------------------------------------
int i=Integer.parseInt(String s);

当s不可转为int的时候就会抛出NumberFormatException

比如你想把"asb"转为数字,那是不可能的
----------------解决方案--------------------------------------------------------
class Student{
double avg;
int sum=0;
void jisuan(String[] args){
try{
for(int i=0;i<args.length;i++){
sum+=Integer.parseInt(args[i]);
}
avg=sum/args.length;
}catch(ArrayIndexOutOfBoundsException e){
System.out.println("未给出参数!");
}catch(NumberFormatException e){
System.out.println("参数中含有非数字!");
}catch(ArithmeticException e){
System.out.println("除数不能为0!");
}
}
void display(){
System.out.println("学员的总成绩为"+sum);
System.out.println("学员的平均成绩为"+avg);
}
}
class Test{
public static void main(String[] args){
Student p=new Student();
p.jisuan(args);
p.display();
}
}
当我直接运行并没有给参数时,异常处理提示除数不能为零,为什么不是"未给出参数"呢,请指点,谢谢
----------------解决方案--------------------------------------------------------

因为你try里的fro循环没有执行,就执行了avg=sum/args.length;


----------------解决方案--------------------------------------------------------
那就我这段代码该怎样改才能实现该功能 提示未给出参数呢
----------------解决方案--------------------------------------------------------
if(args.length==0)
System.out.println("未给出参数!");
这样就可以了,
我觉得能自己判断的就判断一下,没必要什么东西都用异常来处理。
----------------解决方案--------------------------------------------------------

谢谢大家的帮助


----------------解决方案--------------------------------------------------------
  相关解决方案