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

解决方案 »

  1.   

    if(Ticket.ticket[i].getTrainNum() == inputTrainNum){                ;            }
    这个应该是if(Ticket.ticket[i].getTrainNum().equals(inputTrainNum){}吧
      

  2.   

    你new Users的时候usersNum加了1
    但是没有放到users[]里面去
    所以你后面
    users[usersNum].userName = inputName.toString();
    取的时候就取不到
      

  3.   

    另外再说一句
    系统报错很清楚
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
    你稍微debug一下就能找到位置了
      

  4.   

    电猫 要学会调试,所谓的debug能力