如何让我的代码更有效率 [英] How to make my code more efficent

查看:55
本文介绍了如何让我的代码更有效率的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好我刚刚挑战问题并成功完成了

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆