如何在Java

时间:2016-02-12 22:50:23

标签: java while-loop

对于java来说,我是初学者。我有一个简单的java编程任务。以下是该计划的基础:

“Best Purchase正在接受电子设备和配件的在线订单。他们开发了一个程序,允许用户从项目菜单中选择要购买的设备。编写允许用户(客户)的程序选择要购买的商品,计算订购商品的价格,并向客户显示此信息的收据(假设销售税率为6.5%)“

您的程序应提示用户(客户)输入以下信息:

  • 客户名称
  • 购买的电子设备和配件

程序然后输出以下信息:

  • 客户名称
  • 订购的商品总数
  • 销售税前菜单项的价格
  • 销售税
  • 到期总金额

根据用户选择的数字,我的问题是如何在嵌套中添加值?

Ex:用户选择1,2,3,10(退出循环)

这是我的代码:

import java.util.Scanner;
public class OnlinePurchase {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        //Declare Variables
        Scanner input = new Scanner(System.in);
        String sCustomerName ="";   //Stores the Customer's Name
        int nSelection = 0;         //Stores the value entered by the user
        int nSum = 0;               //Stores sum of values entered
        int nCount = 0;             //Number of values entered
        int nPrice = 0;

        //Declare Constants
        final int SENTINEL = 10; //Used to end loop

        //Promt User to enter the their name.
        System.out.print("Please enter the your name: ");
        //Read Customer Name input from user
        sCustomerName = input.nextLine( );    

        //Print to Blank Line for spacing
        System.out.println("\n");

        //Print Purchase Menu
        System.out.println("BEST PURCHASE PRODUCTS:");
        System.out.println("1. Smartphone..........$249");
        System.out.println("2. Smartphone Case.... $39");
        System.out.println("3. PC Laptop...........$1149");
        System.out.println("4. Tablet..............$349");
        System.out.println("5. Tablet Case.........$49");
        System.out.println("6. eReader.............$119");
        System.out.println("7. PC Desktop..........$889");
        System.out.println("8. LED Monitor.........$299");
        System.out.println("9. Laser Printer.......$399");
        System.out.println("10.Complete my order");

        //Print to Blank Line for spacing
        System.out.println("\n");

        while (nSelection != SENTINEL) {

            //Calculate sum
            nSum = nPrice + nSum;

            //Increment counter
            nCount++; //or nCount = nCount + 1;

            //Promt User to enter the an item from the menu.
            System.out.print("Please enter item from the menu above: ");
            //Read input from user for selected purchase
            nSelection = input.nextInt();

            if (nSelection == 1) {

                nPrice = 249;

                //Promt User to enter the an item from the menu.
                System.out.print("Please enter another item from the menu above: ");
                //Read input from user for selected purchase
                nSelection = input.nextInt();
            }
            else if (nSelection == 2 ) {

                nPrice = 39;

                //Promt User to enter the an item from the menu.
                System.out.print("Please enter another item from the menu above: ");
                //Read input from user for selected purchase
                nSelection = input.nextInt();
            }
            else if (nSelection == 3 ) {

                nPrice = 1149; 

                //Promt User to enter the an item from the menu.
                System.out.print("Please enter another item from the menu above: ");
                //Read input from user for selected purchase
                nSelection = input.nextInt();
            }
            else if (nSelection == 4 ) {

                  nPrice = 349;

                  //Promt User to enter the an item from the menu.
                  System.out.print("Please enter another item from the menu above: ");
                  //Read input from user for selected purchase
                  nSelection = input.nextInt();
            }
            else if (nSelection == 5 ) {

                nPrice = 49;

                //Promt User to enter the an item from the menu.
                System.out.print("Please enter another item from the menu above: ");
                //Read input from user for selected purchase
                nSelection = input.nextInt();
            }
            else if (nSelection == 6 ) {

                nPrice = 119;

                //Promt User to enter the an item from the menu.
                System.out.print("Please enter another item from the menu above: ");
                //Read input from user for selected purchase
                nSelection = input.nextInt();
            }
            else if (nSelection == 7 ) {

                nPrice = 899;

                //Promt User to enter the an item from the menu.
                System.out.print("Please enter another item from the menu above: ");
                //Read input from user for selected purchase
                nSelection = input.nextInt();
            }
            else if (nSelection == 8 ) {

                nPrice = 299;

                //Promt User to enter the an item from the menu.
                System.out.print("Please enter another item from the menu above: ");
                //Read input from user for selected purchase
                nSelection = input.nextInt();
            }  
            else if (nSelection == 9 ) {

                nPrice = 399;

                //Promt User to enter the an item from the menu.
                System.out.print("Please enter another item from the menu above: ");
                //Read input from user for selected purchase
                nSelection = input.nextInt();
            }
        }//end while user did not enter 10

        //Print blank line
        System.out.println();

        //Print Thank You message
        System.out.println("Thank you for ordering with Best Purchase,"+sCustomerName);
        //Print number of integers entered
        System.out.println("Total Items Ordered: " + nCount);
         //Print number of integers entered
        System.out.println("Total: $" + nSum);  
    }//end main class
}//end public class

1 个答案:

答案 0 :(得分:2)

老实说,您的代码过于复杂,并且存在大量重复。 您应该利用重用方法和switch语句来处理选择合适的价格。此外,您不应将所有程序逻辑放在main方法中 - 利用更小,更简洁的方法并最小化main()中的内容。

你的while循环应该只接受下一行输入,调用processItem()方法并在输入的数字是你的Sentinel值(10)时终止。

尝试修改您的代码:

import java.util.Scanner;

public class OnlinePurchase {

    String customerName;
    int nSum = 0;               //Stores sum of values entered
    int nCount = 0;             //Number of values entered

    public void printPurchaseMenu(){
        //Print Purchase Menu
        System.out.println("\nBEST PURCHASE PRODUCTS:");
        System.out.println("1. Smartphone..........$249");
        System.out.println("2. Smartphone Case.... $39");
        System.out.println("3. PC Laptop...........$1149");
        System.out.println("4. Tablet..............$349");
        System.out.println("5. Tablet Case.........$49");
        System.out.println("6. eReader.............$119");
        System.out.println("7. PC Desktop..........$889");
        System.out.println("8. LED Monitor.........$299");
        System.out.println("9. Laser Printer.......$399");
        System.out.println("10.Complete my order");
    }

    public void setCustomerName(String name){
        customerName = name;
    }

    public void processInput(int inputValue){

        switch(inputValue){
          case 1: addItem(249); break;
          case 2: addItem(39); break;
          case 3: addItem(1149); break;
          case 4: addItem(349); break;
          case 5: addItem(49); break;
          case 6: addItem(119); break;
          case 7: addItem(889); break;
          case 8: addItem(299); break;
          case 9: addItem(399); break;
          case 10: printResults(); break;
          default: System.out.println("You entered an invalid value.");
        }
    }

    public void addItem(int price){
        nSum += price;
        nCount++;
    }

    public void printResults(){
        //Print Thank You message
        System.out.println("\nThank you for ordering with Best Purchase," + customerName);
        //Print number of integers entered
        System.out.println("Total Items Ordered: " + nCount);
         //Print number of integers entered
        System.out.println("Total: $" + nSum);
    }


    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        OnlinePurchase onlinePurchase = new OnlinePurchase();

        //Declare Variables
        Scanner input = new Scanner(System.in);
        int nSelection = 0;  //Stores the value entered by the user

        //Declare Constants
        final int SENTINEL = 10; //Used to end loop

        //Prompt User to enter the their name.
        System.out.print("Please enter the your name: ");

        //Read Customer Name input from user
        onlinePurchase.setCustomerName(input.nextLine( ));

        //Print Purchase Menu
        onlinePurchase.printPurchaseMenu();

        while (nSelection != SENTINEL){
            System.out.print("Please enter item from the menu above: ");
            nSelection = input.nextInt();

            onlinePurchase.processInput(nSelection);
            System.out.println("\n");
      }//end while user did not enter 10
  }//end main method
}//end public class