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