Java代码跳过输入

Java代码跳过输入,java,Java,我的任务是为大学创建一个小型应用程序,并创建了一个简单的预订系统。 我有一个问题,当程序运行时,我无法理解它是在执行一个方法的print部分,但是在没有执行原始方法的in.next()部分的情况下跳转到下一个方法 我在这里按顺序包括了抽象类、发生问题的类、菜单和“创建”类 在此之前,我已经被告知我的编码(至少命名约定)不是最好的,所以我提前对此表示歉意 当我改变课程,使之不是原始预订的延伸时,它似乎没有这个问题,但不确定这是否相关 import java.util.Scanner; abst

我的任务是为大学创建一个小型应用程序,并创建了一个简单的预订系统。 我有一个问题,当程序运行时,我无法理解它是在执行一个方法的print部分,但是在没有执行原始方法的in.next()部分的情况下跳转到下一个方法

我在这里按顺序包括了抽象类、发生问题的类、菜单和“创建”类

在此之前,我已经被告知我的编码(至少命名约定)不是最好的,所以我提前对此表示歉意

当我改变课程,使之不是原始预订的延伸时,它似乎没有这个问题,但不确定这是否相关

import java.util.Scanner;


abstract class raw_Booking {


private static String fname;
private static String lname;
private static int HouseNo;
private static String Street;
private static String Postcode;


Scanner in = new Scanner(System.in);


raw_Booking(){


}

abstract public String Setfname();
abstract public String Setlname();
abstract public int SetHouseNo();
abstract public String SetStreet();
abstract public String SetPostcode();
abstract public String Verification();



}
问题类别(方法为SetPostcode):

执行要点:

import java.util.ArrayList;
import java.util.Scanner;

public class Booking_Creation{

static Scanner in = new Scanner(System.in);    

static ArrayList<Hotel_Booking> hotelbookings = new ArrayList<Hotel_Booking>();
static ArrayList<Flight_Booking> flightbookings = new ArrayList<Flight_Booking>();
static ArrayList<Car_Hire> carhirebookings = new ArrayList<Car_Hire>();
static ArrayList<Amusement_Park_Ticket> parkticket = new ArrayList<Amusement_Park_Ticket>();
static ArrayList<Concert_Ticket> concertticket = new ArrayList<Concert_Ticket>();



static int selection;
public static void main(String[] arguments){

    Interface.Menu();

    selection = in.nextInt();

    // COULD ASK THE QUESTIONS HERE????
    /// BUT THE INPUT BIT IS INSIDE THE OTHER CLASS



    switch(selection){
            case 1:
            Hotel_Booking hb = new Hotel_Booking();
            hotelbookings.add(hb);
            break;
            case 2:
            Flight_Booking fb = new Flight_Booking();
            flightbookings.add(fb);
            break;
            case 3:
            Car_Hire ch = new Car_Hire();
            carhirebookings.add(ch);
            break;
            case 4:
            Amusement_Park_Ticket pt = new Amusement_Park_Ticket();
            parkticket.add(pt);
            break;
            case 5:
            Concert_Ticket ct = new Concert_Ticket();
            concertticket.add(ct);
            break;
        }


}
}

提前考虑。

在快速浏览示例执行之后,我认为街道名称被解析为两个标记,因此街道名称被设置为“Tulloch”,当提示输入邮政编码(作为字符串)时,将读取“Park”。
Scanner.next()方法上设置一个模式以强制将整行作为单个标记可能会很有用

考虑为代码创建一个注释。你的工作做得不多。不需要在Hotel Booking类中复制变量(fname、lname等)。当您扩展时,您可以访问这些变量。也不要使它们静止。如果它们是静态的,这意味着内存中只存在一个副本。因此,如果您想预订5家酒店,它们的值都相同。或者只需使用scanner类中的nextLine()。不需要在下一个方法上使用模式来实现同样的事情。
public class Interface{



 public static void Menu(){

    System.out.println("Welcome to the booking system select an option");
    System.out.println("1 - Create a new hotel booking");
    System.out.println("2 - Create a new airline booking");
    System.out.println("3 - Create a car hire booking");
    System.out.println("4 - Create a amusement park ticket booking");
    System.out.println("5 - Create a concert ticket booking");
    System.out.println();




}

}
import java.util.ArrayList;
import java.util.Scanner;

public class Booking_Creation{

static Scanner in = new Scanner(System.in);    

static ArrayList<Hotel_Booking> hotelbookings = new ArrayList<Hotel_Booking>();
static ArrayList<Flight_Booking> flightbookings = new ArrayList<Flight_Booking>();
static ArrayList<Car_Hire> carhirebookings = new ArrayList<Car_Hire>();
static ArrayList<Amusement_Park_Ticket> parkticket = new ArrayList<Amusement_Park_Ticket>();
static ArrayList<Concert_Ticket> concertticket = new ArrayList<Concert_Ticket>();



static int selection;
public static void main(String[] arguments){

    Interface.Menu();

    selection = in.nextInt();

    // COULD ASK THE QUESTIONS HERE????
    /// BUT THE INPUT BIT IS INSIDE THE OTHER CLASS



    switch(selection){
            case 1:
            Hotel_Booking hb = new Hotel_Booking();
            hotelbookings.add(hb);
            break;
            case 2:
            Flight_Booking fb = new Flight_Booking();
            flightbookings.add(fb);
            break;
            case 3:
            Car_Hire ch = new Car_Hire();
            carhirebookings.add(ch);
            break;
            case 4:
            Amusement_Park_Ticket pt = new Amusement_Park_Ticket();
            parkticket.add(pt);
            break;
            case 5:
            Concert_Ticket ct = new Concert_Ticket();
            concertticket.add(ct);
            break;
        }


}
}
Welcome to the booking system select an option
1 - Create a new hotel booking
2 - Create a new airline booking
3 - Create a car hire booking
4 - Create a amusement park ticket booking
5 - Create a concert ticket booking

1

Bookers first name please:   Herton

Bookers surname please:   Ferford

Please enter your house number:   4

Please enter your street:   Park Lane

Please enter your postcode:   
Please provide your car reg as verification:  KS23