如何在while循环中成功实现收银员提示?

时间:2017-04-28 11:32:14

标签: java

根据练习: “一家宠物店希望给它一个折扣 客户,如果他们购买一个或多个宠物和 至少五件其他物品。折扣是 相当于另一个成本的20% 物品,但不是宠物。

实施方法 public static void discount(double [] price,boolean [] isPet,int nItems) 该方法接收关于特定销售的信息。对于第i项,价格[i]是 任何折扣前的价格,如果该项目是宠物,则isPet [i]为真。

编写一个程序,提示收银员输入每个价格,然后输入Y作为宠物或N. 另一个项目。使用-1的价格作为哨兵。将输入保存在数组中。打电话给 您实施的方法,并显示折扣。“

我已经制作了discount()方法,但是我无法通过while循环创建收银员提示。练习的书给了我这些 Tips 这就是我的尝试:

import java.util.Scanner;


    public class Pet {


        public static void main(String[] args) {



            Scanner in = new Scanner(System.in);
            double[] prices = new double[10];
            boolean[] isPet = new boolean[5];
            int items = 0;
            int count = 0;
            System.out.println("Hello. Please enter all prices, pets and items.");

            String input = in.nextLine(); 

            while(!input.equals("-1")){
               count++; 
               if(input.equals("Y")){
                   items++;
                   isPet[items] = true;
               }
               if(input.equals("N")){
                   items++;
               }
               if(!input.equals("Y") && !input.equals("N")){
                   double price = Double.parseDouble(input);
                   prices[count] = price;
               }
            }

        }

         public void discount(double[] prices, boolean[] isPet, int nItems){
             double total = 0;   
             double petTotal = 0;
             double realTotal = 0;
             int rItems = nItems;
             for(int i = 0; i < prices.length; i++){
                    total = total + prices[i];
                    if(isPet[i]){
                        rItems = rItems - 1;
                        petTotal = petTotal + prices[i];
                    }
             }
             for(int i = 0; i < isPet.length; i++){
                 int count = 0;
                 if(isPet[i] && rItems >= 5 && count < 2){
                  count++;
                  total = total - petTotal;   
                  realTotal = total * 0.80;
                  realTotal = realTotal + petTotal;
                  System.out.println(realTotal);
             }
                if(rItems < 5){
                    System.out.println(total);
                }         
             }
         }
    }

这显然是错误的,我不知道如何解释练习和提示!我完全感到困惑,根据这个练习,有人可以帮我找到“如何通过while循环实现收银员提示”。或者也许给我一个伪代码/逻辑这个练习?我感谢你的时间。

1 个答案:

答案 0 :(得分:0)

首先,很明显你的代码存在很多问题,但是你的问题是正确的,所以不要放弃。我将就可能的方向提供一些指示,以满足任务要求。

我建议您最初的重点应放在用于从用户收集数据的while循环中。你快到了,while(!input.equals("-1"))确实看起来像是正确的方法。 您只是让用户输入数据一次,这位于String input = in.nextLine();的循环之上。 您想要的是使用用户下次购买时更新循环中的input变量,因此input = in.nextLine();就足够了(可能考虑使用整数)。

然后,一旦您正确运行此功能,请关注折扣方法。

这是一个功能while循环的快速示例,它将收集您需要的数据,玩弄它并尝试理解它。

    System.out.println("Please enter all prices, pets and items.");
    String input = in.nextLine();

    while (!"-1".equals(input)) {
        System.out.println("Please enter all prices, pets and items.");
        input = in.nextLine();
    }