Как мне добавить плату, основанную на да или нет? - PullRequest
0 голосов
/ 16 ноября 2018

Работаем над заданием на кодирование, и мы должны включить методы и вернуть его.Однако это не относится к делу.Я борюсь за часть расчета цены.Хорошо, вот суть того, что я застрял.Когда программа спросит, это ваш автомобиль и импортировать.Если ответ «да», с вас будет взиматься 7% налог на импорт, если нет, то плата будет отменена.Теперь программа запрашивает четыре услуги, в зависимости от того, да или нет, плата будет добавлена ​​в зависимости от их ответа.

Итак, если пользователь хочет заменить масло и настроить его, и если его автомобиль является импортнымцена услуг будет добавлена ​​вместе с налогом на импорт, или если автомобиль не является импортным, но хочет получить все услуги, тогда расходы будут отображаться без добавления налога на импорт и т. д. Окончательный результат будет отображать «До уплаты налоговбудет $ # и после уплаты налогов ваша сумма будет ... "Требуется ли заявление, но я не знаю, с чего начать, потому что я в основном борюсь с да или нет ... Любая помощь?Мой профессор посоветовал мне использовать аккумулятор, поэтому я добавил один .. Безрезультатно, я потерян, любая помощь будет принята с благодарностью.

import java.util.Scanner;
public class CarMaintenance
{
public static void main(String[] args)
{     

  Scanner keyboard = new Scanner(System.in);
  String car; 

  //capture car
  System.out.println("What is the make of your car"); 
  car = keyboard.nextLine();

  String answer;
  boolean yn;

  System.out.println("Is your car an import?");
  while (true)
  {
     answer = keyboard.nextLine();
     if (answer.equalsIgnoreCase("yes")) 
   {
     yn = true;
     break;
   } 
        else if (answer.equalsIgnoreCase("no"))
        {
           yn = false;
           break;
         } 
           else 
           {
           System.out.println("Sorry, I didn't catch that. Please answer yes or no");
           }

   } 

      String[] services = {"Oil Change", "Coolant Flush", "Brake Job", "Tune Up"};                      
      for(int i=0; i<services.length; i++)
         {
           System.out.println("Do you want a " +services[i]);
           answer = keyboard.next();    
          }  

     double amount = 0;
     double[] price = {39.99, 59.99, 119.99, 109.99};  
     for(int i =0; i<price.length; i++)
           {
              amount = (price[i] + price [i]);
           }

  // double total = 0;
     double c = 0;
     c = car(amount);
//   c = car(total);
     System.out.println("The price for your services for your" + " " + car + " " + "is" + " "+ c + ".");


 }

 public static double car(double amount)
 {
 return (double) ((amount-32)* 5/9);
 }      

}

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Прежде чем говорить о вашем коде, я рекомендую вам прочитать эту статью.

Это немного легкомысленно, но в этом есть глубокая правда. И он аккуратно отображается с техникой отладки, которой меня учили .... ммм ... 40 лет назад.


Сначала я обращаю ваше внимание на это:

  System.out.println("Is your car an import?");
  while (true)
  {
     answer = keyboard.nextLine();
     if (answer.equalsIgnoreCase("yes")) 
   {
     yn = true;
     break;
   } 
        else if (answer.equalsIgnoreCase("no"))
        {
           yn = false;
           break;
         } 
           else 
           {
           System.out.println("Sorry, I didn't catch that. Please answer yes or no");
           }

   } 

Этот код довольно неплохо задает вопрос «да или нет» и получает ответ. Он включает код для повторной попытки, если пользователь отвечает чем-то, что не распознается как «да» или «нет».

Так что я предполагаю, что кто-то написал этот код для вас ... или вы где-то его нашли. Вам нужно внимательно прочитать этот код и убедиться, что вы точно понимаете, как он работает.


Далее я обращаю ваше внимание на это:

  for(int i=0; i<services.length; i++)
     {
       System.out.println("Do you want a " +services[i]);
       answer = keyboard.next();    
      }  

Этот код не имеет смысла. (Объясни это своей резиновой утке!)

Ваш предыдущий код является хорошим примером того, как задать вопрос да / нет. Но это не так:

  • Вы не проверяете «да» или «нет».
  • Вы не повторяете, если пользователь дает неузнаваемый ответ
  • Вы даже не храните ответ .... для каждой отдельной услуги.

Тогда это:

 double amount = 0;
 double[] price = {39.99, 59.99, 119.99, 109.99};  
 for(int i =0; i<price.length; i++)
       {
          amount = (price[i] + price [i]);
       }

Похоже, это попытка добавить цену предметов обслуживания к общей сумме. Но:

  • Вы делаете это для каждого пункта обслуживания, а не только для пунктов, которые просил клиент.
  • В любом случае, вы на самом деле неправильно делаете вычисления. (Поговорите с вашей резиновой уткой об этом!)

Как это исправить?

  • Некоторые вещи должны быть очевидны из того, что я сказал выше.
  • Проблема запоминания ответов из первого цикла for и их использования во втором цикле for ... на самом деле является проблемой, которую вы можете / должны избежать. Вместо этого объедините две петли в одну. Вот некоторый псевдокод:

        for each service:
            ask the user if he wants this service
            if the user wants this service:
                add the service cost to the total.
    

    Поймите логику этого и переведите ее в код Java. (Да, я мог бы написать это для вас, но это побеждает цель!)

0 голосов
/ 16 ноября 2018

Если вы хотите, чтобы сборы были добавлены к значению ответа, вы должны сделать это только в одном цикле for, и потому что индекс услуг и цены выстраиваются в очередь, просто используйте оператор if, чтобы проверить, если ответ да

String[] services = {"Oil Change", "Coolant Flush", "Brake Job", "Tune Up"};                      
      for(int i=0; i<services.length; i++)
         {
           System.out.println("Do you want a " +services[i]);
           answer = keyboard.next();   
           if(answer.equalsIgnoresCase()){
                   answer += prices[i]
             }  
          }  

     double amount = 0;
     double[] price = {39.99, 59.99, 119.99, 109.99};  
     for(int i =0; i<price.length; i++)
           {
              amount = (price[i] + price [i]);
           }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...