import java.util.Scanner;
public class FlightTickets{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
{System.out.println("please input the date and individed the month and the day by','");}
String date_1 =sc.nextLine();
String [] date = date_1.split(",");
int[] time = new int[2];
for(int i=0;i<date.length;i++)
{
time[i]=Integer.parseInt(date[i]); //著名输入算法
}
Scanner scan = new Scanner(System.in);
{System.out.println("please input the amount of your tickets");}
int amount = scan.nextInt();
int price=0;
switch(time[1]){
case 1:
if(time[2]==1||time[2]==28)
price=1200;
else if(time[2]==7||time[2]==8||time[2]==14||time[2]==15||time[2]==21||time[2]==22||time[2]==29)
price=1200*8/10;
else price=1200*6/10;
break;
case 2:
if(time[2]==11)
price=1200;
else if(time[2]==4||time[2]==5||time[2]==12||time[2]==18||time[2]==19||time[2]==25||time[2]==26)
price=1200*8/10;
else price=1200*6/10;
break;
case 3:
if(time[2]==0)
price=1200;
else if(time[2]==4||time[2]==5||time[2]==11||time[2]==12||time[2]==18||time[2]==19||time[2]==25||time[2]==26)
price=1200*8/10;
else price=1200*6/10;
break;
case 4:
if(time[2]==4)
price=1200;
else if(time[2]==1||time[2]==2||time[2]==8||time[2]==9||time[2]==15||time[2]==16||time[2]==22||time[2]==23||time[2]==29||time[2]==30)
price=1200*8/10;
else price=1200*6/10;
break;
case 5:
if(time[2]==1||time[2]==30)
{price=1200;}
else if(time[2]==6||time[2]==7||time[2]==13||time[2]==14||time[2]==20||time[2]==21||time[2]==27||time[2]==28)
price=1200 * 8 / 10;
else price=1200 * 6 / 10;
break;
case 6:
if(time[2]==0)
price=1200;
else if(time[2]==3||time[2]==4||time[2]==10||time[2]==11||time[2]==17||time[2]==18||time[2]==24||time[2]==25)
price=1200*8/10;
else price=1200*6/10;
break;
case 7:
if(time[2]==0)
price=1200;
else if(time[2]==1||time[2]==2||time[2]==8||time[2]==9||time[2]==15||time[2]==16||time[2]==22||time[2]==23||time[2]==29||time[2]==30)
price=1200*8/10;
else price=1200*6/10;
break;
case 8:
if(time[2]==0)
price=1200;
else if(time[2]==5||time[2]==6||time[2]==12||time[2]==13||time[2]==19||time[2]==20||time[2]==26||time[2]==27)
price=1200*8/10;
else price=1200*6/10;
break;
case 9:
if(time[2]==0)
price=1200;
else if(time[2]==2||time[2]==3||time[2]==9||time[2]==10||time[2]==16||time[2]==17||time[2]==23||time[2]==24||time[2]==30)
price=1200*8/10;
else price=1200*6/10;
break;
case 10:
if(time[2]==1||time[2]==4)
price=1200;
else if(time[2]==7||time[2]==8||time[2]==14||time[2]==15||time[2]==21||time[2]==22||time[2]==28||time[2]==29)
price=1200*8/10;
else price=1200*6/10;
break;
case 11:
if(time[2]==0)
price=1200;
else if(time[2]==4||time[2]==5||time[2]==11||time[2]==12||time[2]==18||time[2]==19||time[2]==25||time[2]==26)
price=1200*8/10;
else price=1200*6/10;
break;
case 12:
if(time[2]==0)
price=1200;
else if(time[2]==2||time[2]==3||time[2]==9||time[2]==10||time[2]==16||time[2]==17||time[2]==23||time[2]==24||time[2]==30||time[2]==31)
price=1200*8/10;
else price=1200*6/10;
break;
}
{System.out.println("the price is "+price * amount);}
{System.out.println("\n");}
}
}
time[2]的下标超出了长度,你的time数组是2个元素,应该是time[0],time[1],把2改为1就正常了。
JAVA0基础(QQ即时通讯软件项目实训):https://edu.csdn.net/course/detail/2981
解决方案:从21行开始,将time[2]改成time[1]。
解决原因:time是个数组,该数组的长度是2。但是数组的的下标是从0开始的,所以通过下标取值的范围是0到(数组长度-1),也就是取值只有time[0],time[1]。而你的代码从21行开始,用time[2]取值,因为数组中并没有这个值,所以会报数组越界的异常:java.lang.ArrayIndexOutOfBoundsException
如果有帮助请采纳,谢谢!
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y