日期:2014-05-20  浏览次数:20817 次

一个出租车计费的小程序,通过了编译,但运行出错,请教各位高手!!!
/**
 * 出租车计费程序
 * 7:00到23:00之间,起价10元,在3公里以内收取起价,超过3公里,超出的里程每公里收取1.2元。
 * 如果不在这个时段,起价11元,在3公里以内收取起价,超过3公里,超出的里程每公里收取1.4元。
 * 编写程序计算收费金额。要求:可以从命令行输入公里数,在程序中使用Java中现有的类,自动获取
 * 系统时间,并将最终计算结果显示出来。
 */
import java.util.Calendar;

public class CalcTaxi
{
static int len;//行驶公里数
float startPrice;//起价
float startLen=3;//默认起始里程
float perPrice;//每公里价格
float price;//总价
/**
* @param args
*/

public void setPrice()
{
int currHour=Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
if(currHour>=7&&currHour<=23)
{
startPrice=10;
perPrice=1.2f;
}
else
{
startPrice=11;
perPrice=1.4f;
}
}

public void calc(int len)
{
//this.len=len;
setPrice();
if(len<=startLen)
price=startPrice;
else 
price=startPrice+perPrice*(len-startLen);
price=(float)(Math.floor(price*100)/100);
price=Math.round(price);
}

public void show()
{
System.out.println("起价:"+startPrice);
System.out.println("起始公里"+startLen);
System.out.println("每公里价格"+perPrice);
System.out.println("里程:"+len);
System.out.println("===========================");
System.out.println("总价:"+price);
}

public static void main(String[] args)
{
// TODO Auto-generated method stub
CalcTaxi ta1=new CalcTaxi();
int len =0;
 
try
{
len=Integer.parseInt(args[0]);
}catch(NumberFormatException ee)
{
System.out.println("请输入合法的公里数");
System.out.println(ee);
return ;
}
ta1.calc(len);
ta1.show();
}

}


------解决方案--------------------
同意ls的意见,你的程序没有输入参数啊.可以用ls的方法或者加个system.in
------解决方案--------------------
是不是这个异常java.lang.ArrayIndexOutOfBoundsException??
是的话,1楼说得对了!