在进行编码分配时,我们必须合并方法并返回它。但是,这是重点。我正在努力进行价格计算部分。好的,这就是我坚持的要点。程序询问时,是您的车和进口车。如果答案是肯定的,则将向您收取7%的进口税,否则,将不收取费用。现在,该程序要求提供四项服务,具体取决于是或否,将根据其答案增加费用。

因此,如果用户想要换油和调优,并且如果他们的汽车是进口车,则服务价格将与进口税一起添加,或者如果汽车不是进口车但想要所有服务,则将显示费用而无需已添加进口税,等等...最终结果将显示为“税前,这是$#,税后,您的总数是...”需要if语句,但我不知道从哪里开始,因为我主要是努力与是或否...任何帮助?我的教授建议我使用一个蓄电池,所以我加了一个。。无济于事,我迷路了,任何帮助将不胜感激。

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

}

最佳答案

在谈论您的代码之前,建议您阅读本文。


Rubber Duck Debugging


这有点浮躁,但是有一个深刻的道理。并巧妙地映射了我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代码。 (是的,我可以为您写这本书,但这违背了目的!)

关于java - 如何根据是或否添加费用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53329697/

10-10 13:54