book方法这里总是有问题,不知道是哪里问题,我才学java,以前用C写过类似的,问题怎么解决啊?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;
public Ticket(){
ticketsNum++;
}
public String getTrainNum(){return this.trainNum;}
public String getStratCity(){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;
}
public static Ticket[] ticket = new Ticket[2];//current tickets information
static void currentTrainInfo(){
for(int i = 0; i < ticket.length; i++){
ticket[i] = new Ticket();
}
ticket[0].setTrainInfo("K000", "Hefei", "Beijing", "12/07", "08:30", "09:30", 50, 34.0);
ticket[1].setTrainInfo("K111", "Shanghai", "Hefei", "21/07", "09:45", "11:00", 50, 50.5);
}
static void getTrainsInfo(){
Ticket.currentTrainInfo();
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",ticket[i].trainNum,ticket[i].date,ticket[i].startCity,
ticket[i].toCity,ticket[i].startTime,ticket[i].toTime,ticket[i].seatAccount,ticket[i].ticketPrice);
}
}
}
class Users extends Ticket{
protected String userName;
static int usersNum;
public Users(){
super();
usersNum++;
}
public static Users[] users = new Users[2];
public static void currentUsersInfo(){
for(int i = 0; i < users.length; i++){
users[i] = new Users();
}
}
static void book(){
Users.currentUsersInfo();
new Users();
Scanner input = new Scanner(System.in);
System.out.print("输入姓名:");
String inputName = input.nextLine();
users[usersNum].userName = inputName.toString();
System.out.println("\n可供选择的班次信息入下:");
Ticket.getTrainsInfo();
System.out.print("输入班次号: ");
String inputTrainNum = input.nextLine();
for(int i = 0; i < Ticket.ticketsNum; i++){
if(Ticket.ticket[i].getTrainNum() == inputTrainNum){
;
}
}
}}
class Book extends Ticket{
}
public class BookingSystem {
static void homePage(){
System.out.println(" ***Welcome to Booking System***\n ");
System.out.println(" 1-----> Querying");
System.out.println(" 2-----> Booking");
System.out.println(" 3-----> Returning");
System.out.print("Please choose: ");
}
public static void main(String[] args){
Scanner input = new Scanner(System.in);
BookingSystem.homePage();
int choice = input.nextInt();
switch(choice){
case 1:
Ticket.getTrainsInfo();
break;
case 2:
Users.book();
break;
}
}
}
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;
public Ticket(){
ticketsNum++;
}
public String getTrainNum(){return this.trainNum;}
public String getStratCity(){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;
}
public static Ticket[] ticket = new Ticket[2];//current tickets information
static void currentTrainInfo(){
for(int i = 0; i < ticket.length; i++){
ticket[i] = new Ticket();
}
ticket[0].setTrainInfo("K000", "Hefei", "Beijing", "12/07", "08:30", "09:30", 50, 34.0);
ticket[1].setTrainInfo("K111", "Shanghai", "Hefei", "21/07", "09:45", "11:00", 50, 50.5);
}
static void getTrainsInfo(){
Ticket.currentTrainInfo();
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",ticket[i].trainNum,ticket[i].date,ticket[i].startCity,
ticket[i].toCity,ticket[i].startTime,ticket[i].toTime,ticket[i].seatAccount,ticket[i].ticketPrice);
}
}
}
class Users extends Ticket{
protected String userName;
static int usersNum;
public Users(){
super();
usersNum++;
}
public static Users[] users = new Users[2];
public static void currentUsersInfo(){
for(int i = 0; i < users.length; i++){
users[i] = new Users();
}
}
static void book(){
Users.currentUsersInfo();
new Users();
Scanner input = new Scanner(System.in);
System.out.print("输入姓名:");
String inputName = input.nextLine();
users[usersNum].userName = inputName.toString();
System.out.println("\n可供选择的班次信息入下:");
Ticket.getTrainsInfo();
System.out.print("输入班次号: ");
String inputTrainNum = input.nextLine();
for(int i = 0; i < Ticket.ticketsNum; i++){
if(Ticket.ticket[i].getTrainNum() == inputTrainNum){
;
}
}
}}
class Book extends Ticket{
}
public class BookingSystem {
static void homePage(){
System.out.println(" ***Welcome to Booking System***\n ");
System.out.println(" 1-----> Querying");
System.out.println(" 2-----> Booking");
System.out.println(" 3-----> Returning");
System.out.print("Please choose: ");
}
public static void main(String[] args){
Scanner input = new Scanner(System.in);
BookingSystem.homePage();
int choice = input.nextInt();
switch(choice){
case 1:
Ticket.getTrainsInfo();
break;
case 2:
Users.book();
break;
}
}
}
这个应该是if(Ticket.ticket[i].getTrainNum().equals(inputTrainNum){}吧
但是没有放到users[]里面去
所以你后面
users[usersNum].userName = inputName.toString();
取的时候就取不到
系统报错很清楚
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
你稍微debug一下就能找到位置了