【问题标题】:Kotlin code dollars into dollars, quarters, dimes, nickels & cents?Kotlin 将美元编码为美元、25 美分、硬币、镍和美分?
【发布时间】:2021-12-13 01:21:34
【问题描述】:

(我比较新,刚开始攻读“软件开发”学位,刚刚完成我学年的第一个季度,所以,请尽量不要对我太过技术化。哈哈)

使用 Kotlin--

如何从“3.15”的输入中得到“3 Dollars, 1 Dime, 1 Nickel, 0 Pennies”?

我已经得到它,以便我可以得到剩余的单个数量,但不能让它以上述格式作为一个整体执行。

我尝试了各种编码方式(如下所示)。

PS: 我愿意接受任何和所有更改,尽管我需要需要将 func 部分保持为 double,&,“如果,如果 else,else”复数化。(即:如果是“1 dollar”或“2 dollars”需要保持不变)。

这是代码本身: 有趣的 main(){

if  (getDollar(1.22) <= 0.0)
{
  println("You have "+ Math.round(getDollar(1.22)*100/100) + " Dollar");
}
else if

  (getDollar(1.22) == 1.0)
{
  println("You have "+ Math.round(getDollar(1.22)*100/100) + " Dollar");
}
  else {
  (getDollar (1.22) <= 2)
  println("You have "+ Math.round(getDollar(1.22)*100/100) + " Dollars");
  };

         /*  break */

if  (getQuarter(1.22) <= 0.0)
{
  println("You have "+ Math.round(getQuarter(1.22)*100/100) + " Quarter");
}
else if

  (getQuarter(1.22) <= 1)
{
   println("You have "+ Math.round(getQuarter(1.22)*100/100) + " Quarter");
}
  else {
  (getQuarter (1.22) <= 2)
  println("You have "+ Math.round(getQuarter(1.22)*100/100) + " Quarters");
  };

   /* break  */ 

  if  (getDime(1.22) <= 0.0)
{
println("You have "+ Math.round(getDime(1.22)*100/100) + " Dime");
}
else if (getDime(1.22) <= 1)
{
println("You have "+ Math.round(getDime(1.22)*100/100) + " Dime");
}
  else {
  (getDime (1.22) <= 2)
  println("You have "+ Math.round(getDime(1.22)*100/100) + " Dimes");
  };
 
 /* break */

   if  (getNickel(1.22) <= 0.0)
{
println("You have "+ Math.round(getNickel(1.22)*100/100) + " Dollar");
}
else if (getNickel(1.22) <= 1)
{
println("You have "+ Math.round(getNickel(1.22)*100/100) + " Nickel");
}
  else {
  (getNickel (1.22) <= 2)
  println("You have "+ Math.round(getNickel(1.22)*100/100) + " Nickels");
  };

/* break  */

  if (changeDue(1.22) <= 0.0)
{
println("You have "+ Math.round(changeDue(1.22)*1000/100) + " Penny");
}
else if (changeDue(1.22) >= 1)
{
println("You have "+ Math.round(changeDue(1.22)*1000/100) + " Penny");
}
  else {
  (changeDue (1.22) <= 2)
  println("You have "+ Math.round(changeDue(1.22)*1000/100) + " Pennies");
  };

 println("")

/* 中断 */

if  (getDollar(.38) <= 0.0)
{
  println("You have "+ Math.round(getDollar(.38)*100/100) + " Dollar");
}
else if

(getDollar(.38) == 1.0)
{
  println("You have "+ Math.round(getDollar(.38)*100/100) + " Dollar");
}
  else {
  (getDollar (.38) <= 2)
  println("You have "+ Math.round(getDollar(.38)*100/100) + " Dollars");
  };

         /*  break */

 if  (getQuarter(.38) <= 0.0)
{
    println("You have "+ Math.round(getQuarter(.38)*100/100) + " Dollar");
}
else if

   (getQuarter(.38) <= 1)
{
println("You have "+ Math.round(getQuarter(.38)*100/100) + " Quarter");
}
  else {
  (getQuarter (.38) <= 2)
  println("You have "+ Math.round(getQuarter(.38)*100/100) + " Quarters");
  };

   /* break  */ 

  if  (getDime(.38) <= 0.0)
{
println("You have "+ Math.round(getDime(.38)*100/100) + " Dollar");
}
else if (getDime(.38) <= 1)
{
println("You have "+ Math.round(getDime(.38)*100/100) + " Dime");
}
  else {
  (getDime (.38) <= 2)
  println("You have "+ Math.round(getDime(.38)*100/100) + " Dimes");
  };
 
 /* break */

   if  (getNickel(.38) <= 0.0)
{
println("You have "+ Math.round(getNickel(.38)*100/100) + " Dollar");
}
else if (getNickel(.38) <= 1)
{
println("You have "+ Math.round(getNickel(.38)*100/100) + " Nickel");
}
  else {
  (getNickel (.38) <= 2)
  println("You have "+ Math.round(getNickel(.38)*100/100) + " Nickels");
  };

/* break  */

  if (changeDue(.38) <= 0.0)
{
println("You have "+ Math.round(changeDue(.38)*100/100) + " Penny");
}
else if (changeDue(.38) >= 1)
{
println("You have "+ Math.round(changeDue(.38)*1000/100) + " Penny");
}
  else {
  (changeDue (.38) <= 2)
  println("You have "+ Math.round(changeDue(.38)*1000/100) + " Pennies");
  };
};

/* "Main() 结束") */

fun getDollar(a: Double): Double {return Math.floor(a) };

fun getQuarter(a: Double): Double {
return Math.floor(a/.25);
};

fun changeDue(a: Double): Double {
return (a%.25);
};

fun getDime(a: Double): Double {
return (a/.10);
};

fun getNickel(a: Double): Double {
return (a/.05);
};

【问题讨论】:

  • 代码中出现的“1.22”是什么?
  • 这能回答你的问题吗? converting one function into multiple - Kotlin
  • 1.22 是让它运行的测试值。 (大多数时候,它不起作用,直到我把它说成是“var = 1.22”。我想知道为什么,但这就是正在发生的事情。lo)
  • 感谢您的帖子。它确实有帮助,尽管我现在太累了,无法完全理解它。大声笑(虽然,我不确定它是否完全解决了我吐出输出变化的问题,有时它与输入匹配,有时它要么全部显示为“0”,要么偏移一个数字或所以。)我主要想弄清楚的是为什么它没有正确拆分代码。
  • 编辑:我又看了一遍。它确实提供了所需的代码(尽管我需要将其分成 5 件),但我仍然需要查看“为什么”我的失败。大声笑

标签: function kotlin split


【解决方案1】:

既然我得到了上面的工作,我想问为什么这个顶级版本(“长,单链”Func)“总是”工作,而切碎的版本却没有。

此外,我们将不胜感激有关使“切碎版本”的答案更加一致的任何改进。

fun main(args: Array<String>) {
var change = 3.27 ;
changeDue(change);
}

fun changeDue(change: Double){

var dollars = Math.floor(change/1.0);
var getDollar = change-(dollars*1.00);
print(Math.round(dollars*1)/1)
    if(dollars<2) println(" Dollar"); else if (dollars>=2) println(" 
Dollars")



var quarter = Math.floor(getDollar/0.25);
var change2 = getDollar-(quarter*0.25);
print(Math.round(quarter*4)/4)
    if(quarter<2) println(" Quarter"); else if (quarter>=2) println(" 
Quarters")


var dime = Math.floor(change2 / 0.10);
var change3 = change2 - (dime*0.10);
  print(Math.round(dime*10)/10)
    if(dime<2) println(" Dime") else if(dime>=2) println(" Dimes")


var nickel = Math.floor(change3 / 0.05);
var change4 = change3 - (nickel*0.05);
  print(Math.round(nickel*20)/20)
    if(nickel<2) println(" Nickel") else if (nickel>=2) println(" 
Nickels")


var penny = Math.floor(change4*100);
   print(Math.round(penny*100)/100)
    if(penny<2) println(" Penny") else if (penny>=2) println(" Pennies")

return Unit;
}

/* 代码作为单独的功能块;半断*/

fun main(args: Array<String>) {

var change = 1.17

change -= getDollar(change)
change -= getQuarter(change)
change -= getDime(change)
change -= getNickel(change)
getPenny(change)

}


fun getDollar(myChange: Double): Double{
val dollar = myChange/(1.00).toDouble();
val change = myChange - (dollar * 1.00);
  print(Math.floor(dollar * 1)/1);
if(dollar<2) println(" Dollar"); else if (dollar>=2) println(" 
Dollars");
return change
}
fun getQuarter(myChange: Double): Double{
val quarter = myChange/(0.25).toDouble();
val change2 = myChange - (quarter * 0.25);
  print(Math.round(quarter*4)/25);
if(quarter<2) println(" Quarter"); else if (quarter>=2) println(" 
Quarters");
return change2
}
fun getDime(myChange: Double): Double{
val dime = myChange/(0.10).toDouble();
val change3 = myChange - (dime * 0.10);
  print(Math.round(dime * 10)/100);
if(dime<2) println(" Dime"); else if(dime>=2) println(" Dimes");
return change3
}
fun getNickel(myChange: Double): Double{
val nickel = myChange/(0.05).toDouble();
val change4 = myChange - (nickel * 0.05);
print(Math.round(nickel*20)/(20*20));
if(nickel<2) println(" Nickel"); else if (nickel>=2) println(" 
Nickels");
return change4
}
fun getPenny(myChange: Double){
val penny = (myChange/100);
  print(Math.round(penny * 10000)/ 100);
if(penny<2) println(" Penny"); else if (penny>=2) println(" Pennies");

return Unit
}

【讨论】:

  • 你的答案不清楚,请edit它和 - 1,包括问题如何解决的细节,2,从答案中删除问题,答案不应该用于提问。
  • 如果没有附加代码,如何解决问题?另外给出的“答案”是因为我认为将代码+后续问题放入 cmets 是不合适的。至于上述如何“修复”原始答案 - 上面的代码有助于提供我需要的编码项目所需的布局。但是,我仍然不明白为什么长版本给出了一致的答案而损坏的版本没有。
  • 此外,以上内容并没有完全回答问题,因为它没有解决有人指出我在原始编码中遇到的“许多问题”。其中,如果有人可以清楚地解释这一点,那将很有帮助。 (我是新手,因为我是在 9 月中旬才开始的,“方法”是我们做的最后一部分。)
  • 为了更好地解决这个评论 - 实际上,没有。我无法解释太多,除了我看到减法部分的去向,以及如何将整个 # 与小数部分隔离开来。但是,我不明白为什么上面的工作与有趣的季度(x:Double)Double { Return x/.25 } fun change(x:double)Double [ Return x%25 } 更不用说为什么不一致了. (如果我确实了解这些,我就不会在这里..)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-31
  • 1970-01-01
  • 1970-01-01
  • 2014-02-08
  • 1970-01-01
  • 2015-08-23
相关资源
最近更新 更多