2013-10-01 2 views
1

У меня возникли проблемы с моим зацикленным оператором и я не могу заставить его правильно выполнить, не возвращаясь к исходному состоянию цикла. Также, если я хочу, чтобы мой конечный результат включал значения стоимости для общего количества купленных продуктов, как бы я мог это достичь?Выпуск завершенного цикла и вычисления окончательных значений

ЗАВЕРШЕНИЕ ВЫВОДА DESIRED: Клиент покупает все 9 позиции

Пожалуйста, введите ваше имя: John Smith

ГРЕЙПФРУТА ПРОДУКТ

  1. gPod перетасовать $ 49
  2. gPod Прикоснитесь $ 299
  3. gPad Mini $ 329
  4. Gpad 2 $ 399
  5. Gphone $ 199
  6. ККГМ $ 1299
  7. MacNovel Pro $ 1199
  8. MacNovel Air $ 999
  9. MiniMAC $ 599
  10. Завершите мой заказ

Пожалуйста, выберите элемент меню выше: 5

Пожалуйста, выберите другой пункт из меню выше: 2

Пожалуйста, выберите другой пункт из меню выше: 7

Пожалуйста, выберите другой пункт из меню выше: 9

Пожалуйста, выберите другой пункт в меню выше: 3

Пожалуйста, выберите другой пункт из меню выше: 4

Пожалуйста, выберите другой пункт из меню выше: 6

Пожалуйста, выберите другой пункт из меню выше: 1

Пожалуйста, выберите другой пункт из меню выше: 8

Пожалуйста, выберите другой пункт в меню выше: 10 Спасибо за заказа с грейпфрутом Company, Джон Smith

Всего товаров заказано: 9

Стоимость заказанных товаров: $ 5371

налог с продаж: $ 349,115

Общая сумма средств: $ 5720.115

Вот мой код:

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: "); 


     } 

    } 
+0

Я не Java Coder, но это не похоже, что вы выплескиваете любые цифры в конце своими строками? вы еще не закончили кодирование? что вы пробовали? – Malachi

+0

Какова ошибка, которую вы получаете при попытке выполнить этот код? Каковы результаты? – Malachi

+0

Нет, это был неполный код. Полученный ответ помог мне исправить проблему, которую я получал, но теперь я не могу понять, как добавить несколько переменных в одну строку без их конкатенации! – user2836276

ответ

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]); 
    
  • Обновление время цикла для ссылки на эти цены на позиции

    // 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); 
    

Я оставлю вас, чтобы выяснить, как получить причитающуюся сумму :)

+0

Это отлично поработало, спасибо! Единственная проблема, с которой я все еще сталкиваюсь, - это как изменить вопрос с «пожалуйста, выберите элемент из меню выше:« на », пожалуйста, выберите ** другой ** пункт из меню выше:« в инструкции цикла. – user2836276

+0

place System.out.println ("\ nПожалуйста, выберите элемент из меню выше:"); перед заявлением while. Затем поместите System.out.println ("\ nВыберите другой пункт из меню выше:"); после nProducts ++ –

+0

Если это устраняет проблему, отметьте ответ как принятый. –

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)); 
Смежные вопросы