如何让我的代码更有效率 [英] How to make my code more efficent
问题描述
大家好我刚刚挑战问题并成功完成了
Hi everyone i just challenged a problem and completed it succeusfully
问题如下,
ChangeMaker(这个很容易让
变得棘手,它让我怀疑我是否可以成为一名程序员。花点时间并尝试享受学习过程。)
-
提示输入美元和美分的金额。例如$ 1.18。显示产生该金额的季度,硬币,镍币和硬币的数量。
-
Prompt the use to enter an amount of dollars and cents. For example $1.18. Display the number of quarters, dimes, nickels, and pennies to make that amount.
示例:如果用户输入$ 1.18,则应输出:4个季度,1个角钱,1个镍币,3个便士
Example: If the user entered $1.18 it should output: 4 quarters, 1 dimes, 1 nickels, 3 pennies
如果用户输入$ 1.02,则应输出:4个季度,0个角钱,0个镍币,2个便士
If the user entered $1.02 it should output: 4 quarters, 0 dimes, 0 nickels, 2 pennies
我的解决方案在下面,并在工作中,但我想知道有什么地方可以做得更好吗?
My solution is below , and in works , but i was wondering is there any where to make this better ?
using System;
public class Program
{
public static void Main()
{
Program n =new Program();
Console.WriteLine("Welcome to the currency converter");
n.moneychange(Convert.ToDouble(Console.ReadLine()));
}
public void moneychange (double x)
{
int numofquarters=0;
int numofdimes=0;
int numofnickels=0;
int numofpennies=0;
int valueincents= Convert.ToInt32(x * 100);
if(valueincents >= 25)
{
numofquarters=valueincents / 25;
int remainder = valueincents % 25;
if (remainder !=0)
{
if (remainder >= 10)
{
numofdimes=remainder / 10;
remainder = remainder % 10;
if (remainder !=0)
{
if (remainder >= 5)
{
numofnickels=remainder / 5;
remainder = remainder % 5;
if (remainder!=0)
{
if (remainder >=1)
{
numofpennies=remainder / 1;
remainder= remainder % 1;
Console.WriteLine("{0} quarters, {1} dimes, {2} nickels, {3} pennies",numofquarters,numofdimes,numofnickels,numofpennies);
}
}
else
{
Console.WriteLine("{0} quarters, {1} dimes, {2} nickels, {3} pennies",numofquarters,numofdimes,numofnickels,numofpennies);
}
}
if (remainder >= 1)
{
numofpennies=remainder /1;
Console.WriteLine("{0} quarters, {1} dimes, {2} nickels, {3} pennies",numofquarters,numofdimes,numofnickels,numofpennies);
}
}
else
{
Console.WriteLine("{0} quarters, {1} dimes, {2} nickels, {3} pennies",numofquarters,numofdimes,numofnickels,numofpennies);
}
}
if (remainder >= 5)
{
numofnickels=remainder/5;
remainder= remainder % 5;
if( remainder !=0)
{
if (remainder >=1)
{
numofpennies=remainder / 1;
remainder= remainder % 1;
Console.WriteLine("{0} quarters, {1} dimes, {2} nickels, {3} pennies",numofquarters,numofdimes,numofnickels,numofpennies);
}
}
else
{
Console.WriteLine("{0} quarters, {1} dimes, {2} nickels, {3} pennies",numofquarters,numofdimes,numofnickels,numofpennies);
}
}
if(remainder >=1)
{
numofpennies=remainder /1;
Console.WriteLine("{0} quarters, {1} dimes, {2} nickels, {3} pennies",numofquarters,numofdimes,numofnickels,numofpennies);
}
}
else
{
Console.WriteLine("{0} quarters, {1} dimes, {2} nickels, {3} pennies",numofquarters,numofdimes,numofnickels,numofpennies);
}
}
else if (valueincents >= 10)
{
numofdimes=valueincents / 10;
int remainder = valueincents % 10;
if(remainder != 0)
{
if (remainder >= 5)
{
numofnickels=remainder / 5;
remainder = remainder % 5;
if (remainder!=0)
{
if (remainder >=1)
{
numofpennies=remainder / 1;
remainder= remainder % 1;
Console.WriteLine("{0} quarters, {1} dimes, {2} nickels, {3} pennies",numofquarters,numofdimes,numofnickels,numofpennies);
}
}
else
{
Console.WriteLine("{0} quarters, {1} dimes, {2} nickels, {3} pennies",numofquarters,numofdimes,numofnickels,numofpennies);
}
}
if (remainder >=1)
{
numofpennies=remainder /1;
Console.WriteLine("{0} quarters, {1} dimes, {2} nickels, {3} pennies",numofquarters,numofdimes,numofnickels,numofpennies);
}
}
else
{
Console.WriteLine("{0} quarters, {1} dimes, {2} nickels, {3} pennies",numofquarters,numofdimes,numofnickels,numofpennies);
}
}
else if ( valueincents >= 5)
{
numofnickels=valueincents / 5;
int remainder = valueincents % 5;
if(remainder !=0)
{
if (remainder >=1)
{
numofpennies=remainder / 1;
remainder= remainder % 1;
Console.WriteLine("{0} quarters, {1} dimes, {2} nickels, {3} pennies",numofquarters,numofdimes,numofnickels,numofpennies);
}
}
else
{
Console.WriteLine("{0} quarters, {1} dimes, {2} nickels, {3} pennies",numofquarters,numofdimes,numofnickels,numofpennies);
}
}
else if (valueincents >=1)
{
numofpennies=valueincents/1;
Console.WriteLine("{0} quarters, {1} dimes, {2} nickels, {3} pennies",numofquarters,numofdimes,numofnickels,numofpennies);
}
}
}
谢谢大家的关注!
推荐答案
嗯,是的,有办法改进它。 所有这些嵌套的"如果"声明完全没必要。 你所要做的就是从最大的面额开始,继续下去:
Well, yes, there are ways to improve it. All of those nested "if" statements are completely unnecessary. All you have to do is start with the largest denomination and move on down:
using System;
public class Program
{
public static void Main()
{
Console.WriteLine("Welcome to the currency converter");
moneychange(Convert.ToDouble(Console.ReadLine()));
}
public static void moneychange (double x)
{
int valueincents = Convert.ToInt32(x * 100);
int numofquarters = valueincents / 25;
valueincents = valueincents % 25;
int numofdimes = valueincents / 10;
valueincents = valueincents % 10;
int numofnickels = valueincents / 5;
valueincents = valueincents % 5;
int numofpennies = valueincents;
Console.WriteLine("{0} quarters, {1} dimes, {2} nickels, {3} pennies",numofquarters,numofdimes,numofnickels,numofpennies);
}
}
这篇关于如何让我的代码更有效率的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!