1

I'm having trouble with my looped statement and can't get it to properly execute without it reverting to the original looped condition. Also if I want my final output to include pricing values for the total number of products bought how would I achieve this?

FINAL OUTPUT DESIRED: Customer purchases all 9 items

Please enter your name: John Smith

GRAPEFRUIT PRODUCT

  1. gPod shuffle $49
  2. gPod Touch $299
  3. gPad Mini $329
  4. gPad 2 $399
  5. gPhone $199
  6. gMac $1299
  7. MacNovel Pro $1199
  8. MacNovel Air $999
  9. MiniMac $599
  10. Complete my order

Please select an item from the menu above: 5

Please select another item from the menu above: 2

Please select another item from the menu above: 7

Please select another item from the menu above: 9

Please select another item from the menu above: 3

Please select another item from the menu above: 4

Please select another item from the menu above: 6

Please select another item from the menu above: 1

Please select another item from the menu above: 8

Please select another item from the menu above: 10 Thank you for ordering with Grapefruit Company, John Smith

Total items ordered: 9

Price of items ordered: $5371

Sales tax: $349.115

Total amount due: $5720.115

Here is my code:

public static void main(String[] args) {

        // Declare Variables
        Scanner input = new Scanner (System.in);
        String CustomerName;
        int gpodShuffle = 1;
        int gpodTouch = 2;
        int gpadMini = 3; 
        int gpadTwo = 4;
        int gphone = 5;
        int gmac = 6;
        int macnovelPro = 7;
        int macnovelAir = 8;
        int miniMac = 9;
        int nNumber = 0;
        int nProducts = 0;
        int nTotal = 0;

        //Declare Constants 
        final int SENTINEL = 10;
        final double SALES_TAX = 6.5;
        final int GPOD_SHUFFLE = 49;
        final int GPOD_TOUCH = 299;
        final int GPAD_MINI = 329;
        final int GPAD_TWO = 399;
        final int GPHONE = 199;
        final int GMAC = 1299;
        final int MAC_NOVELPRO = 1199;
        final int MAC_NOVELAIR = 999;
        final int MINI_MAC = 599;

        //Prompt user to enter name
        System.out.println("Please enter your name: ");

        //Enter user name
        CustomerName = input.nextLine();

        //Print Blank Line 
        System.out.println("");

        //Begin Product Listing
        System.out.println("GRAPEFRUIT PRODUCT:");

        System.out.println("1. gPod shuffle $49");

        System.out.println("2. gPod Touch   $299");

        System.out.println("3. gPad Mini    $329");

        System.out.println("4. gPad 2       $399");

        System.out.println("5. gPhone       $199");

        System.out.println("6. gMac         $1299");

        System.out.println("7. MacNovel Pro $1199");

        System.out.println("8. MacNovel Air $999");

        System.out.println("9. MiniMac      $599");

        System.out.println("10. Complete my order");

        //Keep reading until the input is 10
        while (nNumber != SENTINEL) {
            //Calculate entered items
            nTotal = nTotal + nNumber;

            nProducts++;

        System.out.println("\nPlease select an item from the menu above: ");

        //Read number entered by the user
        nNumber = input.nextInt();

        if (nNumber == SENTINEL) 
        System.out.println("Thank you for ordering with Grapefruit Company, " + CustomerName);
        else if  (nNumber != SENTINEL) 
        System.out.println("Please select another item from the menu above: ");
        } //End Loop



        //Process selections entered by the user

            //Increment count 


            //Print blank line to screen
            System.out.println("");

            //Total amount of product ordered
            System.out.println("Total items ordered: ");

            //Total price of items ordered
            System.out.println("Price of items ordered: ");

            //Sales tax associated with the purchase
            System.out.println("Sales tax: " + SALES_TAX);

            //Total amount due by the customer to Grapefruit Co. 
            System.out.println("Total amount due: ");


      }

    }
4

2 回答 2

2

这真的很需要添加某种类来保存这些项目,以便您可以轻松地遍历这些项目。

不过,在这种情况下您可以做些什么:

  • 将项目的价格保存在一个数组中。

    int [] itemPrices = {49,299,329,399,199,1299,1199,999,599};
    
  • 更新您的打印报表

    System.out.println("1. gPod shuffle $" + prices[0]);
    
    System.out.println("2. gPod Touch   $" + prices[1]);
    
    System.out.println("3. gPad Mini    $" + prices[2]);
    
    System.out.println("4. gPad 2       $" + prices[3]);
    
    System.out.println("5. gPhone       $" + prices[4]);
    
    System.out.println("6. gMac         $" + prices[5]);
    
    System.out.println("7. MacNovel Pro $" + prices[6]);
    
    System.out.println("8. MacNovel Air $" + prices[7]);
    
    System.out.println("9. MiniMac      $" + prices[8]);
    
  • 更新 while 循环以引用这些商品价格

    // Keep reading until the input is 10
    while (nNumber != SENTINEL) 
    {
    
        System.out.println("\nPlease select an item from the menu above: ");
    
        // Read number entered by the user
        nNumber = input.nextInt();
    
        if (nNumber == SENTINEL) 
        {   
            System.out.println("Thank you for ordering with Grapefruit Company, " + CustomerName);
            // The user's just entered the value held for SENTINEL - leave the while loop.
            break;
        } 
    
        // Calculate the total price.
        nTotal = nTotal + prices[nNumber-1];
    
    
        // Increment the total number of products entered.
        nProducts++;
    }
    
  • 更新您的最终打印声明:

        //Total amount of product ordered
        System.out.println("Total items ordered: " + nProducts);
    
        //Total price of items ordered
        System.out.println("Price of items ordered: "+nTotal);
    
        //Sales tax associated with the purchase
        System.out.println("Sales tax: " + SALES_TAX);
    

我会让你弄清楚如何获得应付总额:)

于 2013-10-01T21:13:09.013 回答
1

要解决您遇到的此串联问题:

System.out.println("Total amount due: " + ((SALES_TAX * nTotal) + nTotal));

这意味着在将其转换为字符串之前执行完整的计算。

但是这背后的数学是错误的,而是执行以下操作:

// Calculate the amount of tax.
double salesTax = (SALES_TAX/100) * nTotal;
System.out.println("Sales tax: " + salesTax);

你应该这样做:

//Total amount due by the customer to Grapefruit Co. 
System.out.println("Total amount due: " + (salesTax + nTotal));
于 2013-10-01T23:22:01.723 回答