提示打印所有类型,并计算该类型的总和

时间:2014-04-04 04:24:54

标签: java methods printing call

我有一个需要阅读的文件:

 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,您显然会称这些方法为

希望这能很好地解释。

1 个答案:

答案 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]);
}