看下面的截图输入的部分!!!import java.util.*;class Ticket{
protected String trainNum;
protected String startCity;
protected String toCity;
protected String date;
protected String startTime;
protected String toTime;
protected int seatAccount;
protected double ticketPrice;
static int ticketsNum;
static Ticket ticket0 = Ticket.incTicket();
static Ticket ticket1 = Ticket.incTicket();
static Ticket[] tickets = new Ticket[ticketsNum + 1]; public Ticket(){}
public static Ticket incTicket(){
ticketsNum++;
return new Ticket();
}
public String getTrainNum(){return this.trainNum;}
public String getStartCity(){return this.startCity;}
public String getToCity(){return this.toCity;}
public String getDate(){return this.date;}
public String getStartTime(){return this.startTime;}
public String getToTime(){return this.toTime;}
public void setTrainInfo(String tN,String sC, String tC, String d, String sT, String tT, int sA, double tP){
this.trainNum = tN;
this.startCity = sC;
this.toCity = tC;
this.date = d;
this.startTime = sT;
this.toTime = tT;
this.seatAccount = sA;
this.ticketPrice = tP;
}
static void getTotalTrainsInfo(){
System.out.printf("%10s%9s%14s%14s%10s%10s%7s%10s\n",
"班 次","日 期","始 发 站","终 点 站","始发时间","到达时间","座位量","票 价");
for(int i = 0; i < Ticket.ticketsNum; i++){
System.out.printf(" %-6s%-7s%-10s%-10s%-10s%-9s%-7d%-7.2f\n",tickets[i].trainNum,tickets[i].date,tickets[i].startCity,
tickets[i].toCity,tickets[i].startTime,tickets[i].toTime,tickets[i].seatAccount,tickets[i].ticketPrice);
}
}
static void printWithIndex(int i){
System.out.printf("%10s%9s%14s%14s%10s%10s%7s%10s\n",
"班 次","日 期","始 发 站","终 点 站","始发时间","到达时间","座位量","票 价");
System.out.printf(" %-6s%-7s%-10s%-10s%-10s%-9s%-7d%-7.2f\n",tickets[i].trainNum,tickets[i].date,tickets[i].startCity,
tickets[i].toCity,tickets[i].startTime,tickets[i].toTime,tickets[i].seatAccount,tickets[i].ticketPrice);
} static void getTrainInfoByCity(){
Scanner input = new Scanner(System.in);
System.out.print("输入起点: ");
String startCity = input.nextLine();
System.out.print("输入终点: ");
String toCity = input.nextLine();
for(int index = 0; index < Ticket.ticketsNum; index++){
if(Ticket.tickets[index].getStartCity().compareTo(startCity) == 0
&& Ticket.tickets[index].getToCity().compareTo(toCity) == 0){
printWithIndex(index);
}
}
}
/* static void getTrainInfoOfUser(){
Scanner input = new Scanner(System.in);
System.out.print("输入姓名: ");
String userName = input.nextLine();
for(int index = 0; index < Users.usersNum; index++){
if(Users.users[index].)
}
}*/
}class Users extends Ticket{ String userName;
public static int usersNum;
public static Ticket[] users = new Users[Users.usersNum + 1];
public Users(){
++usersNum;
}
static void queryPage(){
System.out.println(" *****查询系统***** ");
System.out.println(" 1-----> 全部路线查询");
System.out.println(" 2-----> 起终点查询");
System.out.println(" 3-----> 用户名查询");
}
static void querying(){
Scanner input = new Scanner(System.in);
queryPage();
while(true){
System.out.print("请选择: ");
int choice = input.nextInt();
switch(choice){
case 1:
Ticket.getTotalTrainsInfo();break;
case 2:
Ticket.getTrainInfoByCity();break;
case 3:
}
}
}
static void booking(){
boolean choice = false;
do{
Users user = new Users();
users[Users.usersNum - 1] = user;
System.out.println(Users.usersNum);
Scanner input = new Scanner(System.in);
System.out.print("输入姓名:");
String inputName = input.nextLine();
user.userName = inputName;
System.out.println(" 可供选择的班次信息入下:");
Ticket.getTotalTrainsInfo();
System.out.print("输入班次号: ");
String inputTrainNum = input.nextLine();
for(int index = 0; index < Ticket.ticketsNum; index++){
if(Ticket.tickets[index].getTrainNum().compareTo(inputTrainNum) == 0){
Ticket.tickets[index].seatAccount--;
// users[Users.usersNum - 1] = Ticket.tickets[index];
System.out.println(" ***订票成功***");
}
}
System.out.print("是否继续? (true/false): ");
choice = input.nextBoolean();
}while(choice);
if(choice == false){
BookingSystem.homePage();
}
}
static void returning(){
}
}public class BookingSystem {
static void homePage(){
System.out.println(" *****欢迎来到火车订票系统***** ");
System.out.println(" 1-----> 查询");
System.out.println(" 2-----> 订票");
System.out.println(" 3-----> 退票");
}
public static void main(String[] args){
(Ticket.tickets[0] = Ticket.ticket0).setTrainInfo("K000", "Hefei", "Beijing", "12/07", "08:30", "09:30", 50, 34.0);
(Ticket.tickets[1] = Ticket.ticket1).setTrainInfo("K111", "Shanghai", "Hefei", "21/07", "09:45", "11:00", 50, 50.5);
BookingSystem.homePage();
Scanner input = new Scanner(System.in);
while(true){
System.out.print("请选择: ");
int choice = input.nextInt();
switch(choice){
case 1:
Users.querying();
break;
case 2:
Users.booking();
break;
case 3:
break;
}
}
}
}
问题一:是数组越界问题
*****欢迎来到火车订票系统*****
1-----> 查询
2-----> 订票
3-----> 退票
请选择: 2
1
输入姓名:dai
可供选择的班次信息入下:
班 次 日 期 始 发 站 终 点 站 始发时间 到达时间 座位量 票 价
K000 12/07 Hefei Beijing 08:30 09:30 50 34.00
K111 21/07 Shanghai Hefei 09:45 11:00 50 50.50
输入班次号: K000
***订票成功***
是否继续? (true/false): true //输入true无法继续订票
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at Users.booking(BookingSystem.java:123)
at BookingSystem.main(BookingSystem.java:173)
问题二: 输入false后,在订票也不行,是数组越界问题
*****欢迎来到火车订票系统*****
1-----> 查询
2-----> 订票
3-----> 退票
请选择: 2
1
输入姓名:dai
可供选择的班次信息入下:
班 次 日 期 始 发 站 终 点 站 始发时间 到达时间 座位量 票 价
K000 12/07 Hefei Beijing 08:30 09:30 50 34.00
K111 21/07 Shanghai Hefei 09:45 11:00 50 50.50
输入班次号: K000
***订票成功***
是否继续? (true/false): false
*****欢迎来到火车订票系统*****
1-----> 查询
2-----> 订票
3-----> 退票
请选择: 2
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at Users.booking(BookingSystem.java:123)
at BookingSystem.main(BookingSystem.java:173)
protected String trainNum;
protected String startCity;
protected String toCity;
protected String date;
protected String startTime;
protected String toTime;
protected int seatAccount;
protected double ticketPrice;
static int ticketsNum;
static Ticket ticket0 = Ticket.incTicket();
static Ticket ticket1 = Ticket.incTicket();
static Ticket[] tickets = new Ticket[ticketsNum + 1]; public Ticket(){}
public static Ticket incTicket(){
ticketsNum++;
return new Ticket();
}
public String getTrainNum(){return this.trainNum;}
public String getStartCity(){return this.startCity;}
public String getToCity(){return this.toCity;}
public String getDate(){return this.date;}
public String getStartTime(){return this.startTime;}
public String getToTime(){return this.toTime;}
public void setTrainInfo(String tN,String sC, String tC, String d, String sT, String tT, int sA, double tP){
this.trainNum = tN;
this.startCity = sC;
this.toCity = tC;
this.date = d;
this.startTime = sT;
this.toTime = tT;
this.seatAccount = sA;
this.ticketPrice = tP;
}
static void getTotalTrainsInfo(){
System.out.printf("%10s%9s%14s%14s%10s%10s%7s%10s\n",
"班 次","日 期","始 发 站","终 点 站","始发时间","到达时间","座位量","票 价");
for(int i = 0; i < Ticket.ticketsNum; i++){
System.out.printf(" %-6s%-7s%-10s%-10s%-10s%-9s%-7d%-7.2f\n",tickets[i].trainNum,tickets[i].date,tickets[i].startCity,
tickets[i].toCity,tickets[i].startTime,tickets[i].toTime,tickets[i].seatAccount,tickets[i].ticketPrice);
}
}
static void printWithIndex(int i){
System.out.printf("%10s%9s%14s%14s%10s%10s%7s%10s\n",
"班 次","日 期","始 发 站","终 点 站","始发时间","到达时间","座位量","票 价");
System.out.printf(" %-6s%-7s%-10s%-10s%-10s%-9s%-7d%-7.2f\n",tickets[i].trainNum,tickets[i].date,tickets[i].startCity,
tickets[i].toCity,tickets[i].startTime,tickets[i].toTime,tickets[i].seatAccount,tickets[i].ticketPrice);
} static void getTrainInfoByCity(){
Scanner input = new Scanner(System.in);
System.out.print("输入起点: ");
String startCity = input.nextLine();
System.out.print("输入终点: ");
String toCity = input.nextLine();
for(int index = 0; index < Ticket.ticketsNum; index++){
if(Ticket.tickets[index].getStartCity().compareTo(startCity) == 0
&& Ticket.tickets[index].getToCity().compareTo(toCity) == 0){
printWithIndex(index);
}
}
}
/* static void getTrainInfoOfUser(){
Scanner input = new Scanner(System.in);
System.out.print("输入姓名: ");
String userName = input.nextLine();
for(int index = 0; index < Users.usersNum; index++){
if(Users.users[index].)
}
}*/
}class Users extends Ticket{ String userName;
public static int usersNum;
public static Ticket[] users = new Users[Users.usersNum + 1];
public Users(){
++usersNum;
}
static void queryPage(){
System.out.println(" *****查询系统***** ");
System.out.println(" 1-----> 全部路线查询");
System.out.println(" 2-----> 起终点查询");
System.out.println(" 3-----> 用户名查询");
}
static void querying(){
Scanner input = new Scanner(System.in);
queryPage();
while(true){
System.out.print("请选择: ");
int choice = input.nextInt();
switch(choice){
case 1:
Ticket.getTotalTrainsInfo();break;
case 2:
Ticket.getTrainInfoByCity();break;
case 3:
}
}
}
static void booking(){
boolean choice = false;
do{
Users user = new Users();
users[Users.usersNum - 1] = user;
System.out.println(Users.usersNum);
Scanner input = new Scanner(System.in);
System.out.print("输入姓名:");
String inputName = input.nextLine();
user.userName = inputName;
System.out.println(" 可供选择的班次信息入下:");
Ticket.getTotalTrainsInfo();
System.out.print("输入班次号: ");
String inputTrainNum = input.nextLine();
for(int index = 0; index < Ticket.ticketsNum; index++){
if(Ticket.tickets[index].getTrainNum().compareTo(inputTrainNum) == 0){
Ticket.tickets[index].seatAccount--;
// users[Users.usersNum - 1] = Ticket.tickets[index];
System.out.println(" ***订票成功***");
}
}
System.out.print("是否继续? (true/false): ");
choice = input.nextBoolean();
}while(choice);
if(choice == false){
BookingSystem.homePage();
}
}
static void returning(){
}
}public class BookingSystem {
static void homePage(){
System.out.println(" *****欢迎来到火车订票系统***** ");
System.out.println(" 1-----> 查询");
System.out.println(" 2-----> 订票");
System.out.println(" 3-----> 退票");
}
public static void main(String[] args){
(Ticket.tickets[0] = Ticket.ticket0).setTrainInfo("K000", "Hefei", "Beijing", "12/07", "08:30", "09:30", 50, 34.0);
(Ticket.tickets[1] = Ticket.ticket1).setTrainInfo("K111", "Shanghai", "Hefei", "21/07", "09:45", "11:00", 50, 50.5);
BookingSystem.homePage();
Scanner input = new Scanner(System.in);
while(true){
System.out.print("请选择: ");
int choice = input.nextInt();
switch(choice){
case 1:
Users.querying();
break;
case 2:
Users.booking();
break;
case 3:
break;
}
}
}
}
问题一:是数组越界问题
*****欢迎来到火车订票系统*****
1-----> 查询
2-----> 订票
3-----> 退票
请选择: 2
1
输入姓名:dai
可供选择的班次信息入下:
班 次 日 期 始 发 站 终 点 站 始发时间 到达时间 座位量 票 价
K000 12/07 Hefei Beijing 08:30 09:30 50 34.00
K111 21/07 Shanghai Hefei 09:45 11:00 50 50.50
输入班次号: K000
***订票成功***
是否继续? (true/false): true //输入true无法继续订票
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at Users.booking(BookingSystem.java:123)
at BookingSystem.main(BookingSystem.java:173)
问题二: 输入false后,在订票也不行,是数组越界问题
*****欢迎来到火车订票系统*****
1-----> 查询
2-----> 订票
3-----> 退票
请选择: 2
1
输入姓名:dai
可供选择的班次信息入下:
班 次 日 期 始 发 站 终 点 站 始发时间 到达时间 座位量 票 价
K000 12/07 Hefei Beijing 08:30 09:30 50 34.00
K111 21/07 Shanghai Hefei 09:45 11:00 50 50.50
输入班次号: K000
***订票成功***
是否继续? (true/false): false
*****欢迎来到火车订票系统*****
1-----> 查询
2-----> 订票
3-----> 退票
请选择: 2
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at Users.booking(BookingSystem.java:123)
at BookingSystem.main(BookingSystem.java:173)
public static int usersNum;
public static Ticket[] users = new Users[Users.usersNum + 1];
public Users(){
++usersNum;
}
users数组不会动态扩展的,只在首次初始化一下而已,它一直都只有1的size。修改下:public static List<Users> users = new ArrayList<Users>();
booking那里users.add(user);
import java.util.List;
import java.util.Scanner;class Ticket{
protected String trainNum;
protected String startCity;
protected String toCity;
protected String date;
protected String startTime;
protected String toTime;
protected int seatAccount;
protected double ticketPrice;
static int ticketsNum;
static Ticket ticket0 = Ticket.incTicket();
static Ticket ticket1 = Ticket.incTicket();
static Ticket[] tickets = new Ticket[ticketsNum + 1];
public Ticket(){}
public static Ticket incTicket(){
ticketsNum++;
return new Ticket();
}
public String getTrainNum(){return this.trainNum;}
public String getStartCity(){return this.startCity;}
public String getToCity(){return this.toCity;}
public String getDate(){return this.date;}
public String getStartTime(){return this.startTime;}
public String getToTime(){return this.toTime;}
public void setTrainInfo(String tN,String sC, String tC, String d, String sT, String tT, int sA, double tP){
this.trainNum = tN;
this.startCity = sC;
this.toCity = tC;
this.date = d;
this.startTime = sT;
this.toTime = tT;
this.seatAccount = sA;
this.ticketPrice = tP;
}
static void getTotalTrainsInfo(){
System.out.printf("%10s%9s%14s%14s%10s%10s%7s%10s\n",
"班 次","日 期","始 发 站","终 点 站","始发时间","到达时间","座位量","票 价");
for(int i = 0; i < Ticket.ticketsNum; i++){
System.out.printf(" %-6s%-7s%-10s%-10s%-10s%-9s%-7d%-7.2f\n",tickets[i].trainNum,tickets[i].date,tickets[i].startCity,
tickets[i].toCity,tickets[i].startTime,tickets[i].toTime,tickets[i].seatAccount,tickets[i].ticketPrice);
}
}
static void printWithIndex(int i){
System.out.printf("%10s%9s%14s%14s%10s%10s%7s%10s\n",
"班 次","日 期","始 发 站","终 点 站","始发时间","到达时间","座位量","票 价");
System.out.printf(" %-6s%-7s%-10s%-10s%-10s%-9s%-7d%-7.2f\n",tickets[i].trainNum,tickets[i].date,tickets[i].startCity,
tickets[i].toCity,tickets[i].startTime,tickets[i].toTime,tickets[i].seatAccount,tickets[i].ticketPrice);
}
static void getTrainInfoByCity(){
Scanner input = new Scanner(System.in);
System.out.print("输入起点: ");
String startCity = input.nextLine();
System.out.print("输入终点: ");
String toCity = input.nextLine();
for(int index = 0; index < Ticket.ticketsNum; index++){
if(Ticket.tickets[index].getStartCity().compareTo(startCity) == 0
&& Ticket.tickets[index].getToCity().compareTo(toCity) == 0){
printWithIndex(index);
}
}
}
/* static void getTrainInfoOfUser(){
Scanner input = new Scanner(System.in);
System.out.print("输入姓名: ");
String userName = input.nextLine();
for(int index = 0; index < Users.usersNum; index++){
if(Users.users[index].)
}
}*/
}
class Users extends Ticket{
String userName;
public static int usersNum;
public static List<Users> users = new ArrayList<Users>();
public Users(){
++usersNum;
}
static void queryPage(){
System.out.println(" *****查询系统***** ");
System.out.println(" 1-----> 全部路线查询");
System.out.println(" 2-----> 起终点查询");
System.out.println(" 3-----> 用户名查询");
}
static void querying(){
Scanner input = new Scanner(System.in);
queryPage();
while(true){
System.out.print("请选择: ");
String str = input.nextLine();
int choice = Integer.parseInt(str);
switch(choice){
case 1:
Ticket.getTotalTrainsInfo();break;
case 2:
Ticket.getTrainInfoByCity();break;
case 3:
}
}
}
static void booking(){
boolean choice = false;
do{
Users user = new Users();
users.add(user);
System.out.println(Users.usersNum);
Scanner input = new Scanner(System.in);
System.out.print("输入姓名:");
String inputName = input.nextLine();
user.userName = inputName;
System.out.println(" 可供选择的班次信息入下:");
Ticket.getTotalTrainsInfo();
System.out.print("输入班次号: ");
String inputTrainNum = input.nextLine();
for(int index = 0; index < Ticket.ticketsNum; index++){
if(Ticket.tickets[index].getTrainNum().compareTo(inputTrainNum) == 0){
Ticket.tickets[index].seatAccount--;
// users[Users.usersNum - 1] = Ticket.tickets[index];
System.out.println(" ***订票成功***");
}
}
System.out.print("是否继续? (true/false): ");
String temp = input.nextLine();
choice = Boolean.valueOf(temp);
}while(choice);
if(choice == false){
BookingSystem.homePage();
}
}
static void returning(){
}
}
public class BookingSystem {
static void homePage(){
System.out.println(" *****欢迎来到火车订票系统***** ");
System.out.println(" 1-----> 查询");
System.out.println(" 2-----> 订票");
System.out.println(" 3-----> 退票");
}
public static void main(String[] args){
(Ticket.tickets[0] = Ticket.ticket0).setTrainInfo("K000", "Hefei", "Beijing", "12/07", "08:30", "09:30", 50, 34.0);
(Ticket.tickets[1] = Ticket.ticket1).setTrainInfo("K111", "Shanghai", "Hefei", "21/07", "09:45", "11:00", 50, 50.5);
BookingSystem.homePage();
Scanner input = new Scanner(System.in);
while(true){
System.out.print("请选择: ");
String str = input.nextLine();
int choice = Integer.parseInt(str);
switch(choice){
case 1:
Users.querying();
break;
case 2:
Users.booking();
break;
case 3:
break;
}
}
}
}
数组可以动态定义,但是一旦定义好了,其大小不可扩展了。List可以达到你需要的扩展,记录用户的目的。
List不懂就再看看教材吧,这个是一个很常用的东西。
数组可以动态定义,但是一旦定义好了,其大小不可扩展了。List可以达到你需要的扩展,记录用户的目的。
List不懂就再看看教材吧,这个是一个很常用的东西。
ArrayList 构造的对象应该就可以动态扩展的吧,非要用泛型?
具体代码请看2L
*****欢迎来到火车订票系统*****
1-----> 查询
2-----> 订票
3-----> 退票
0-----> 退出
请选择操作: 1
*****查询系统*****
1-----> 全部路线查询
2-----> 起终点查询
3-----> 用户名查询
0-----> 退出
请选择: 1
班 次 日 期 始 发 站 终 点 站 始发时间 到达时间 座位量 票 价
K000 12/07 Hefei Beijing 08:30 09:30 50 34.00
K111 21/07 Shanghai Hefei 09:45 11:00 50 50.50
请选择: 0
请选择: //这里又回到查询的界面了....