当前位置: 首页 > 编程语言 > C#

将数字转换为单词分享

时间:2023-04-11 02:37:07 C#

C#学习教程:将数字转换为单词我需要有关我的代码的帮助。任务是将数字转换为从0到1000万的单词。我正在尝试使用GUI对我的代码执行此操作,问题是它根本不返回答案。任何人都可以帮助我确定代码可能有什么问题。代码如下:privatevoidbtnConvertToText_Click(objectsender,EventArgse){stringConvertedNumber="";intnumber=Convert.ToInt32(txtNumber.Text);整数计数=0;string[]ones={“一”、“二”、“三”、“四”、“五”、“六”、“七”、“八”、“九”};string[]teens={“十一”、“十二”、“十三”、“四”、“十五”、“十六”、“十七”、“十八”、“十九”};string[]tens={"十","二十","三十","四十","五十","六十","七十","八十","九十"};string[]moreThenTens={"百","千","百万"};while(number>=0){if(number==0){ConvertedNumber="零";}elseif(number<10){for(intCounter=1;Counter=10&&number10){if(number>10&&number<20){for(intx=11;x=100&&number100){数字-=100;计数++;}ConvertedNumber+=ones[Count-1]+moreThenTens[0];}否则如果(数字r>=1000&&数字1000){数字-=1000;计数++;}ConvertedNumber+=ones[Count-1]+moreThenTens[1];}elseif(number>=10000&&number10000){if(number=20000){number-=10000;计数++;}}if(Count>=1){if(number=1000){ConvertedNumber+=teens[Count-1]+moreThenTens[1];}}elseif(Count>1){ConvertedNumber+=tens[Count-1]+moreThenTens[1];}}elseif(number>=100000&&number100000){number-=100000;计数++;}ConvertedNumber+=ones[Count-1]+moreThenTens[0]+moreThenTens[1];}elseif(number>=1000000&&number1000000){number-=1000000;计数++;}ConvertedNumber+=ones[Count-1]+moreThenTens[2];}elseif(number==10000000){while(number>10000000){number-=10000000;计数++;}ConvertedNumber+=tens[0]+moreThenTens[2];}}txtConvertedNumber.Text=ConvertedNumber;}}while(number>=0)看起你的代码正正在创建一个无限循环例如:if(number==0){ConvertedNumber="Zero";这不会退出你的循环,因此永远不会到达txtConvertedNumber.Text=ConvertedNumber;使用支票转换您的号码,例如:if(number==0){ConvertedNumber="Zero";数=-1;}这可能很有用publicstaticstringNumberToWords(intnumber){if(number==0)return"Zero";if(number0){words+=NumberToWords(number/1000000)+"百万";数%=1000000;}if((number/1000)>0){words+=NumberToWords(number/1000)+"千";数%=1000;}if((number/100)>0){words+=NumberToWords(number/100)+"Hundred";数%=100;}if(number>0){if(words!="")words+="and";varunitsMap=new[]{“零”、“一”、“二”、“三”、“四”、“五”、“六”、“七”、“八”、“九”、“十”,"十一","十二","十三","十四","十五","十六","十七","十八","十九"};vartensMap=new[]{“零”,“十”,“二十”,“三十”,“四十”,“五十”,“六十”,“七十”,“八十”,“九十”};如果(数字0)words+="-"+unitsMap[number%10];}}返回单词;您应该在while循环之前检查数字是否为零if(number==0)ConvertedNumber="Zero";然后按下Modifywhile(number>0)如下StringWord=NumberToWords(convert.toInt64(number[0]))+"AND"+NumberToWords(convert.toInt64(number[1]));这也可以使您的代码更易于调试/跟踪while(NumberExists(ConvertedNumber,number)){...}将此方法与nameSpace放在同一个nameSpace中。privatestaticboolNumberExists(stringconvertedNumber,intnumber){if(convertedNumber==""&&number!=null){返回真;}否则返回假;通常,我建议不要在您的代码中添加幻数,例如+1或-1。它可以使调试变得更加繁琐。如果您必须这样做才能获得一些工作,请尝试找出原因并尽快重写。绝对在开始其他方法之前。好像卡在了一个循环里..我在这里检查了青少年数字部分,好像你忘记将数字减少到小于零或零以上就是关于C#学习教程:将数字转换为单词的全部内容如果有帮助,请分享大家用过,需要多了解C#学习教程。希望大家多多关注——elseif(number>=10&&number10){if(number>10&&number本文整理自网络,不代表立场,如涉及侵权,请点击联系管理员有权删除,如需转载请注明出处: