我正在处理一个项目,我需要读取并保存所有文件信息到数组,现在我想返回一个数组,这是客户Id,以便我可以添加到另一个方法来搜索位置。
public static int[] booking(int dis) { //dis is in the main method to seanner user input
Scanner date = new Scanner(System.in);
String inputDate;
if(dis==1) {
System.out.println("Input the date for the booking");
inputDate = date.next();
String str;
String[] tokens = null;
int num;
int line=0;
int code;
Booking[] booking = new Booking[20];
File f = new File("bookings-"+inputDate+".txt");
try {
Scanner file = new Scanner(f); //scanner booking file
while(file.hasNext()) {
str=file.nextLine();
tokens=str.split(",");
booking[line] = new Booking(); // save all values in booking class
booking[line].setBookingId(Integer.parseInt(tokens[0]));
booking[line].setCustomerID(Integer.parseInt(tokens[1]));
booking[line].setBookingDate(tokens[2]);
for(int i=0;i<tokens[3].length();i++) { //some value in null
if(tokens[3]==null) {
tokens[3]="0";
}else booking[line].setTotalPrice(Float.parseFloat(tokens[3]));
}
num=tokens.length-4;
int[] intArray = new int[num];
for(int i = 0; i < num; i++) {
intArray[i] = Integer.parseInt(tokens[4+i]);
}
booking[line].setServiceCodes(intArray);
line=line+1;
}
for(int i=0;i<line;i++) { // the print is works
//System.out.println(booking[i].getBookingId()+"tt"+booking[i].getCustomerID()+"tt"+booking[i].getBookingDate()+"tt"+booking[i].getTotalPrice()+"tt"+Arrays.toString(booking[i].getServiceCodes()));
System.out.println(booking[i].getCustomerID());
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
return booking; // the return booking is does not work
}
如何调用方法并返回我想要的数组?
在方法签名中,您指定该方法必须返回一个int[]
。您正在尝试返回booking
,它的类型是Booking[]
。您可以将方法签名更改为返回类型Booking[]
:
public static Booking[] booking(int dis) {
...
}
另外(如oh - god - spider所提到的),在返回语句中使用booking
变量时没有定义它。您可以通过将Booking[] booking = new Booking[20];
移动到if
语句之上,或者将返回语句移动到if
语句中(为else情况添加另一个返回语句)来解决这个问题。选择哪个解决方案取决于在这些情况下您希望该方法返回什么。
替换方法签名
public static int[] booking(int dis)
public static Booking[] booking(int dis)
如果方法的返回类型是int型数组,则不能让函数返回预订数组将int替换为booking
声明预订时方法内部的行。预订是否是一种预订方法。
你不能在一个方法中实例化一个方法,所以我建议你把属性booking变成int[]类型,像这样:
int[] booking = new int[20];
在booking方法中,你可以返回booking,因为你的方法是int数组
的类型booking需要声明为int[],而不是booking[]。或者您需要将Booking[]声明为返回语句。