我有一个需要阅读的文件:
public static int start_program1(int rcount,int[]reservation_code,int[]fl_number,String[]last_name,String[]first_name,String[]seat_type,double[]seat_cost)
{
String newLine;
try
{
//define a file valuable for Buffered read
BufferedReader Reservation_file = new BufferedReader(new FileReader("reservationx.dat"));
//read lines in file until there are no more lines in the file to read
while ((newLine = Reservation_file.readLine()) != null)
{
//there is a "#" between each data item in each line
StringTokenizer delimiter = new StringTokenizer(newLine,"#");
rcount=rcount+1;
reservation_code[rcount] = Integer.parseInt(delimiter.nextToken());
fl_number[rcount] = Integer.parseInt(delimiter.nextToken());
last_name[rcount] =delimiter.nextToken();
first_name[rcount] =delimiter.nextToken();
seat_type[rcount] =delimiter.nextToken();
seat_cost[rcount] = Double.parseDouble(delimiter.nextToken());
}//while loop
Reservation_file.close();
}//end try
catch (IOException error)
{
//there was an error on the file writing
System.out.println("Error on file read " + error);
}//error on read
return rcount;
}//end start_system1
正在阅读的文件(reservations.dat)如下:(不确定发布此文件的更简单方法) (预订代码#航班号#姓氏#名字#座位类型#座位费用)
1189#1234#史密斯#詹姆斯#教练#299.99# 1190#9876#琼斯#玛丽#教练#150.00# 1191#2000#阿特金斯#约翰##第一次#789.00 1192#1000#加洛#詹姆斯##第一次#465.00 1193#4567#马里昂#凯文#业务##300.00 1194#4444#约翰逊#格雷格#业务##765.99 1195#8888#布朗#安德鲁##第一次#567.39 1196#4567#绿色#埃里克#教练#234.00# 1197#9876#托马斯#克里斯#业务#1900.99# 1198#7777#爬坡#卡拉##第一次#876.76 1199#2222#科尔#詹姆斯#教练#256.99# 1200#9281#巴尔特科#格兰特#业务##896.00 1201#2000#Best#Curtis#first#543.99# 1202#1000#坎贝尔#谢霆锋#教练#287.00# 1203#4444#Dietz#Merrialyce#coach#219.00# 1204#9281#杜兰#亚历山大#业务##690.00 1205#2892#Gurung#Suraj#first#789.99# 1206#7777#Kumpfmiller#瑞恩##第一次#278.99 1207#4444#麦库姆#戴维教练#451.99# 1208#8888#MCLAIN#海梅#教练#199.00# 1209#9876#马伦#马修#教练#189.00# 1210#1234#阮#汤米#教练#299.00# 1211#1234#Ossler#艾米#教练#300.00# 1212#7777#Polenavitch#迈克尔教练##198.99 1213#2222#林峰##大通第一#908.99# 1214#2222#罗萨莱斯#戴维教练#216.99# 1215#2892#施瓦茨#达斯汀#业务##987.00 1216#4444#短#塞缪尔#教练#245.99# 1217#8888#SOLTIS#乔希#教练#178.00# 1218#1234#韦伯斯特#罗纳德#业务##892.00 1219#1234#Wielock#威廉##第一次#589.00 1220#2892#白腹#安德鲁#教练#178.00# 1221#4444#光亮#亚当#教练#235.00# 1222#9876#克莱默#杰西#教练#568.00# 1223#4444#科斯特洛#迈克尔教练##200.00 1234#7777#柯琳#肖恩#业务##908.00 1225#1000#法拉#加里##首先588.00# 1226#1000#芬兰人#林恩#业务##799.00 1227#4567#Freise#布赖恩#教练#254.00# 1228#4567#Huang#Pao-Jen#coach#199.00# 1229#4567#Kamani#纳尔逊#教练#150.00# 1230#2000#Loughner#瑞恩#教练#175.00# 1231#2000#孟席斯#亚当#教练#199.00# 1232#1234#Neupane#Kiran#coach#135.00# 1233#1234#镍#布兰登##首先999.00# 1234#7777#Ropchack#约瑟夫##首先899.00# 1235#7777#惠腾#沃尔特#教练#786.99# 1236#4444#老虎伍兹#玛丽#教练#299.00# 1237#4444#性#振力#教练#126.00#
这是方法,进行有问题的计算:
public static void seat_value(int rcount,int[]reservation_code,int[]fl_number,String[]last_name,String[]first_name,String[]seat_type,double[]seat_cost)
{
int i;
double total=0;
String search_seat = "";
String output = "Enter the Seat Type you are searching for";
search_seat = JOptionPane.showInputDialog(null,
output, " ",
JOptionPane.QUESTION_MESSAGE);
for (i = 0; i <=rcount; ++i) {
//CHECK IF coach, first, or business
if(seat_type[i].equals("coach"))
{
total=total+seat_cost[i];
}
if (seat_type.equals("first"))
{
total=total+seat_cost[i];
}
if(seat_type.equals("business"))
{
total=total+seat_cost[i];
}
}
System.out.println("The total for " +search_seat+ " = " +total);
}
我的问题是这样的:每当我有一个类型提示(“教练”,“第一”,“商业”) 我无法弄清楚如何打印所有类型的保留&amp;这种类型的总成本? 目前获得:2051.97 8900.94 8094.45 实际总数:7230.93 8295.11 8138.98 教练第一业务
PS,您显然会称这些方法为
希望这能很好地解释。
答案 0 :(得分:0)
好在这个循环中:
for (i = 0; i <=rcount; ++i) {
//CHECK IF coach, first, or business
if(seat_type[i].equals("coach"))
{
total=total+seat_cost[i];
}
if (seat_type[i].equals("first"))
{
total=total+seat_cost[i];
}
if(seat_type[i].equals("business"))
{
total=total+seat_cost[i];
}
}
无论座位类型如何,您每次都会将费用添加到相同的总金额中。所以你每次都会得到所有座位的总和。
基本上是你用英语做的事情:
我将通过每个客户。对于每个客户,我将执行以下操作:
如果他们的座位类型是教练,请将其添加到总数中。
如果他们的座位类型是第一个,请将其添加到总数中。
如果他们的座位类型是商家,请将其添加到总计。
基本上,您将每个客户的门票价格添加到总数中,因为每个客户都将满足您正在测试的三个条件之一。
您应该使用以下内容替换三个if语句:
if(seat_type[i].equals(search_seat)) {
total += seat_cost[i];
System.out.println( reservation_code[i] + "," + fl_number[i] + "," + last_name[i] + "," + first_name[i] + "," + seat_type[i] + "," + seat_cost[i]);
}