凉渃渃 2021-04-13 23:38 采纳率: 80%
浏览 33
已采纳

java新手遇到的问题 第一个代码 过编译了 但是无法运行 显示实在switch方面出现了问题

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");}
  }
}

  • 写回答

5条回答 默认 最新

  • 关注

    time[2]的下标超出了长度,你的time数组是2个元素,应该是time[0],time[1],把2改为1就正常了。

    JAVA0基础(QQ即时通讯软件项目实训):https://edu.csdn.net/course/detail/2981

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥20 sim800c模块 at指令及平台
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题