繁体   English   中英

如何在Java中的while循环中添加总和多个语句

[英]How to add sum multiple statements in a while loop in Java

我是Java的初学者。 我有一个简单的Java编程任务。 这是程序的基础:

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

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

  • 顾客姓名
  • 购买电子设备及配件

然后,程序输出以下信息:

  • 客户姓名
  • 订购的商品总数
  • 不含税的菜单项价格
  • 销售税
  • 应付总额

这是我的问题,如果取决于用户选择的数字,我该如何在嵌套中添加值?

例如:用户选择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

老实说,您的代码过于复杂,并且有很多重复。 您应该利用可重用的方法,或者利用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM