|
|
|
перевод числа в словесное выражение java
|
|||
|---|---|---|---|
|
#18+
Ребят,нужна ваша помощь в исправлении программы! в общем я написал программу для перевода чисел в слова,но после 100000 она начинает неправильно выдавать ответы. вроде смотрю,все нормально написано,но чтото не так. помогите пожалуйста исправить))) package stringtonum; import java.util.Scanner; public class StringToNum { public static void main(String args[]) { Scanner sc=new Scanner(System.in); System.out.println("enter number "); int number=sc.nextInt(); int pole[]=new int[10]; int i=0; while(number!=0) { pole[i]=number%10; number=number/10; i++; } int dlinna=i; int pole1[]=new int[dlinna]; int j=0; for(int k=dlinna-1;k>=0;k--) { pole1[j]=pole[k]; j++; } StringToNum stn=new StringToNum(); String output=""; switch(dlinna) { case 1: { output+=stn.strNum1(pole1[dlinna-1]); System.out.println("output="+output); break; } case 2: { int no1=pole1[dlinna-2]*10+pole1[dlinna-1]; if(no1>=11 & no1<=19) { output=stn.strNum2(no1); output=output+" "+stn.strNum1(pole1[dlinna-1]); System.out.println("output="+output); } else { pole1[dlinna-2]=pole1[dlinna-2]*10; output+=stn.strNum2(pole1[dlinna-2]); output=output+" "+stn.strNum1(pole1[dlinna-1]); System.out.println("output="+output); } break; } case 3: { output=stn.strNum1(pole1[dlinna-3])+" hundred "; int no1=pole1[dlinna-2]*10+pole1[dlinna-1]; if(no1>=11 & no1<=19) { output=stn.strNum2(no1); } else { pole1[dlinna-2]=pole1[dlinna-2]*10; output+=stn.strNum2(pole1[dlinna-2]); output=output+" "+stn.strNum1(pole1[dlinna-1]); } System.out.println("output="+output); break; } case 4: { output=stn.strNum1(pole1[dlinna-4])+" thousand "; if(!stn.strNum1(pole1[dlinna - 3]).equals("")) { output+=stn.strNum1(pole1[dlinna-3])+" hundred "; } int no1=pole1[dlinna-2]*10+pole1[dlinna-1]; if(no1>=11 & no1<=19) { output=stn.strNum2(no1); } else { pole1[dlinna-2]=pole1[dlinna-2]*10; output+=stn.strNum2(pole1[dlinna-2]); output=output+" "+stn.strNum1(pole1[dlinna-1]); } System.out.println("output="+output); break; } case 5: { int no1=pole1[dlinna-5]*10+pole1[dlinna-4]; if(no1>=11 & no1<=19) { output=stn.strNum2(no1)+" thousand "; } else { pole1[dlinna-5]=pole1[dlinna-5]*10; output+=stn.strNum2(pole1[dlinna-5]); output=output+" "+stn.strNum1(pole1[dlinna-4])+" thousand "; } if( !stn.strNum1(pole1[dlinna - 3]).equals("")) { output+=stn.strNum1(pole1[dlinna-3])+" hundred "; } no1 = pole1[dlinna - 2] * 10 + pole1[dlinna - 1]; if(no1>=11 & no1<=19) { output=stn.strNum2(no1); } else { pole1[dlinna-2]=pole1[dlinna-2]*10; output+=stn.strNum2(pole1[dlinna-2]); output=output+" "+stn.strNum1(pole1[dlinna-1]); } System.out.println("output="+output); break; } case 6: { output+=stn.strNum1(pole1[dlinna-6])+" million "; int no1=pole1[dlinna-5]*10+pole1[dlinna-4]; if(no1>=11 & no1<=19) { output+=stn.strNum2(no1)+" thousand "; } else { pole1[dlinna-5]=pole1[dlinna-5]*10; output+=stn.strNum2(pole1[dlinna-5]); output=output+" "+stn.strNum1(pole1[dlinna-4])+" thousand "; } if( !stn.strNum1(pole1[dlinna - 3]).equals("")) { output+=stn.strNum1(pole1[dlinna-3])+" hundred "; } no1 = pole1[dlinna - 2] * 10 + pole1[dlinna - 1]; if(no1>=11 & no1<=19) { output=stn.strNum2(no1); } else { pole1[dlinna-2]=pole1[dlinna-2]*10; output+=stn.strNum2(pole1[dlinna-2]); output=output+" "+stn.strNum1(pole1[dlinna-1]); } System.out.println("output="+output); break; } case 7: { int no1=pole1[dlinna-7]*10+pole1[dlinna-6]; if(no1>=11 & no1<=19) { output=stn.strNum2(no1)+" Milloin "; } else { pole1[dlinna-7]=pole1[dlinna-7]*10; output+=stn.strNum2(pole1[dlinna-7]); output=output+" "+stn.strNum1(pole1[dlinna-6])+" Million "; } no1=pole1[dlinna-5]*10+pole1[dlinna-4]; if(no1>=11 & no1<=19) { output=stn.strNum2(no1)+" Thousand "; } else { pole1[dlinna-5]=pole1[dlinna-5]*10; output+=stn.strNum2(pole1[dlinna-5]); output=output+" "+stn.strNum1(pole1[dlinna-4])+" Thousand "; } if( !stn.strNum1(pole1[dlinna - 3]).equals("")) { output+=stn.strNum1(pole1[dlinna-3])+" Hundred "; } no1 = pole1[dlinna- 2] * 10 + pole1[dlinna - 1]; if(no1>=11 & no1<=19) { output=stn.strNum2(no1); } else { pole1[dlinna-2]=pole1[dlinna-2]*10; output+=stn.strNum2(pole1[dlinna-2]); output=output+" "+stn.strNum1(pole1[dlinna-1]); } System.out.println("output="+output); break; } } } String strNum1(int a) { String nacalo=""; switch(a) { case 1: { nacalo="one"; break; } case 2: { nacalo="two"; break; } case 3: { nacalo="three"; break; } case 4: { nacalo="four"; break; } case 5: { nacalo="five"; break; } case 6: { nacalo="six"; break; } case 7: { nacalo="seven"; break; } case 8: { nacalo="eight"; break; } case 9: { nacalo="nine"; break; } } return nacalo; } String strNum2(int a) { String nacalo=""; switch(a) { case 10: { nacalo="ten"; break; } case 20: { nacalo="twenty"; break; } case 30: { nacalo="thirty"; break; } case 40: { nacalo="fourty"; break; } case 50: { nacalo="fifty"; break; } case 60: { nacalo="sixty"; break; } case 70: { nacalo="seventy"; break; } case 80: { nacalo="eighty"; break; } case 90: { nacalo="ninty"; break; } case 11: { nacalo="eleven"; break; } case 12: { nacalo="twelve"; break; } case 13: { nacalo="thirteen"; break; } case 14: { nacalo="fourteen"; break; } case 15: { nacalo="fifteen"; break; } case 16: { nacalo="sixteen"; break; } case 17: { nacalo="seventeen"; break; } case 18: { nacalo="eighteen"; break; } case 19: { nacalo="nineteen"; break; } } return nacalo; } } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2013, 20:47:37 |
|
||
|
перевод числа в словесное выражение java
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2013, 21:17:17 |
|
||
|
перевод числа в словесное выражение java
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2013, 21:22:23 |
|
||
|
перевод числа в словесное выражение java
|
|||
|---|---|---|---|
|
#18+
Спасибо большое за готовые решения,я их просмотрел,но у меня задание написать программу на 300 и более строк,так что приходится изобретать чтото свое) был бы искренне благодарен,если бы кто нибудь мне помог исправить мой код) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2013, 21:47:17 |
|
||
|
перевод числа в словесное выражение java
|
|||
|---|---|---|---|
|
#18+
Shirokij, жесть... это где такие задания что нужно именно более 300 строк? Вообще, перефразируя Экзепюри - хорошая программа, это такая программа, в которой нельзя удалить ни единой строки, чтобы она не потеряла работоспособность. Например я испытываю подлинное насладение когда вижу крохотную программку, которая делает свою задачу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2013, 22:27:18 |
|
||
|
перевод числа в словесное выражение java
|
|||
|---|---|---|---|
|
#18+
ShirokijСпасибо большое за готовые решения,я их просмотрел,но у меня задание написать программу на 300 и более строк,так что приходится изобретать чтото свое) был бы искренне благодарен,если бы кто нибудь мне помог исправить мой код) Так в чём проблема? Пустить пыль преподу в глаза? Но поставь побольше ENTER-ов. Я-то тоже считал что сорц должен быть компактным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2013, 23:01:05 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=199&tid=2128141]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
51ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 197ms |
| total: | 311ms |

| 0 / 0 |
