【问题标题】:failing to get the expected output in hackerrank day2 program未能在hackerrank day2程序中获得预期的输出
【发布时间】:2018-03-18 04:23:41
【问题描述】:
import java.util.*;
import java.math.*;

public class Arithmetic
{

public static void main(String[] args) 
{
    Scanner scan = new Scanner(System.in);
    double mealCost = scan.nextDouble(); // original meal price
    double tipPercent = scan.nextDouble(); // tip percentage
    double taxPercent = scan.nextDouble(); // tax percentage
    scan.close();

    // Write your calculation code here.
   tipPercent = mealCost*tipPercent/100.0;
    taxPercent =mealCost*taxPercent/100.0;



  //cast the result of the rounding operation to an int and save it as totalCost 

    double totalCost = mealCost + tipPercent + taxPercent;

    // Print your result
   int total = (int)totalCost; 
    System.out.println("The total meal cost is " +  total + " dollars.");
}
}

输入:
20.75
10
3
预期产出:总餐费为 23 美元。

结果输出:总餐费为 26 美元。

这个程序有什么问题?

【问题讨论】:

  • 你调试你的程序了吗?您是否验证了各个步骤产生了正确的结果?为什么使用值208
  • 你没有使用你的输入参数,而是用硬编码的数字覆盖它们.....
  • 您的预期结果不应该是 33 美元吗?只需简单地将所有三个相加即可得到 33.75!
  • @ᴳᵁᴵᴰᴼ 好的。但即使我使用了输入参数,它在其他测试用例中也失败了,即输入 10.25 17 5 产生的 o/p:总餐费是 12 美元。但预计是:总餐费是13美元。
  • @vijay_ky 输入10.25 17 5 我得到了结果The total meal cost is 13 dollars. 这里的确切问题是什么?另外,如果不应该是13,那么请告诉我们您实际上是如何计算您的预期结果的!

标签: java math casting percentage


【解决方案1】:

您不使用您的小费和税收输入。

应该是:

tipPercent = mealCost*tipPercent/100.0;
taxPercent = mealCost*taxPercent/100.0;

【讨论】:

  • 是的,我做到了。即使结果与预期相同。
  • 我无法重现您的问题。当我获取您的代码并对其进行更改时,它输出了预期的结果。也许你的计算有问题。
【解决方案2】:

最后这段代码完美运行

import java.util.*;
import java.math.*;

public class Arithmetic
{

public static void main(String[] args)
 {
    Scanner scan = new Scanner(System.in);
    double mealCost = scan.nextDouble(); // original meal price
    double tipPercent = scan.nextDouble(); // tip percentage
    double taxPercent = scan.nextDouble(); // tax percentage
    scan.close();

    // Write your calculation code here.
   tipPercent = mealCost*tipPercent/100.0;
    taxPercent =mealCost*taxPercent/100.0;

    // cast the result of the rounding operation to an int and save it as 
//totalCost 
    double totalCost = mealCost + tipPercent + taxPercent;

    if((tipPercent + 0.5)>=((int)tipPercent + 1))
       {
           totalCost  += 1;
       }
       else
    {
    }
    // Print your result
   int total = (int)totalCost; 
    System.out.println("The total meal cost is " +  total + " dollars.");
 }
}

【讨论】:

  • 这不是一个通用的解决方案。您只是将值硬编码设置为totalCost
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-31
  • 2022-09-27
  • 1970-01-01
  • 1970-01-01
  • 2021-10-13
  • 1970-01-01
相关资源
最近更新 更多