diff options
| author | Syndamia <kami02882@gmail.com> | 2019-07-30 15:32:30 +0300 |
|---|---|---|
| committer | Syndamia <kami02882@gmail.com> | 2019-07-30 15:32:30 +0300 |
| commit | a48a6e1c302a5e90235a82e73517cd43f9c1432e (patch) | |
| tree | 33a0cce43035f6a0100b890199b486827679bd51 /Java/Beginer training | |
| parent | fa8afba66b94af7609494fa83371954cea380c0d (diff) | |
| download | Self-learning-a48a6e1c302a5e90235a82e73517cd43f9c1432e.tar Self-learning-a48a6e1c302a5e90235a82e73517cd43f9c1432e.tar.gz Self-learning-a48a6e1c302a5e90235a82e73517cd43f9c1432e.zip | |
Made Number names a standalone project; Made number names code more efficient and enlarged maximum and minimum number value
Diffstat (limited to 'Java/Beginer training')
| -rw-r--r-- | Java/Beginer training/out/production/Beginer training/NumberName.class | bin | 4015 -> 4947 bytes | |||
| -rw-r--r-- | Java/Beginer training/src/NumberName.java | 120 |
2 files changed, 0 insertions, 120 deletions
diff --git a/Java/Beginer training/out/production/Beginer training/NumberName.class b/Java/Beginer training/out/production/Beginer training/NumberName.class Binary files differindex 0bf8239..39408a5 100644 --- a/Java/Beginer training/out/production/Beginer training/NumberName.class +++ b/Java/Beginer training/out/production/Beginer training/NumberName.class diff --git a/Java/Beginer training/src/NumberName.java b/Java/Beginer training/src/NumberName.java deleted file mode 100644 index 34f735c..0000000 --- a/Java/Beginer training/src/NumberName.java +++ /dev/null @@ -1,120 +0,0 @@ -import java.util.ArrayList; -import java.math.*; -import java.util.Scanner; - -public class NumberName { - public static void main(String args[]){ - //Used http://www.englishlessonsbrighton.co.uk/saying-large-numbers-english/ and https://www.grammarly.com/blog/hyphen-in-compound-numbers/ - Scanner scn = new Scanner(System.in); - - System.out.println("Number to British English text"); - System.out.println("How to use: type a whole number, press enter and the program will say it's full proper name. Close the program to stop it."); - System.out.println("NOTE: Your numbers must be between 2147483647 and -2147483648 (any characters that are not numbers and - will result in error)"); - - while (true) { - try { - int n = Integer.parseInt(scn.nextLine().trim()); - System.out.println(NameOfNumber(n)); - } catch (Exception ex) { - System.out.println("ERROR: Please type a whole number between 2147483647 and -2147483648 (NOTE: any characters that are not numbers and - will result in this error)"); - } - } - } - - public static String NameOfNumber(int num) { - StringBuilder name = new StringBuilder(num < 0 ? "negative " : ""); - var number_parts = new ArrayList<Integer>(); - - while (num != 0) { - number_parts.add(Math.abs(num % 1000)); - num /= 1000; - } - - for (int i = number_parts.size() - 1; i > -1; i--){ - int curr_num = number_parts.get(i); - - if ((curr_num + "").length() == 3) { - name.append(SmallNumName(curr_num / 100)).append(" hundred"); - - curr_num %= 100; - if (curr_num != 0) name.append(" and "); - } - name.append(SmallNumName(curr_num)); - - switch (i) { - case 1: if (number_parts.get(1) != 0) { - name.append(" thousand"); - - if (number_parts.get(0) != 0) { - if (number_parts.get(0) / 100 == 0) name.append(" and "); - else name.append(", "); - } - } break; - - case 2: if (number_parts.get(2) != 0) { - name.append(" million"); - - if (number_parts.get(0) != 0 || number_parts.get(1) != 0) { - if (number_parts.get(1) / 100 == 0) name.append(" and "); - else name.append(", "); - } - } break; - - case 3: if (number_parts.get(3) != 0) { - name.append(" milliard"); - - if (number_parts.get(0) != 0 || number_parts.get(1) != 0 || number_parts.get(2) != 0) { - if (number_parts.get(2) / 100 == 0) name.append(" and "); - else name.append(", "); - } - } break; - } - } - return name.toString(); - } - - private static String SmallNumName(int num) { - int part = 1; - switch (num) { - case 0: return ""; - case 1: return "one"; - case 2: return "two"; - case 3: return "three"; - case 4: return "four"; - case 5: return "five"; - case 6: return "six"; - case 7: return "seven"; - case 8: return "eight"; - case 9: return "nine"; - - case 10: return "ten"; - case 11: return "eleven"; - case 12: return "twelve"; - case 13: return "thirteen"; - case 15: return "fifteen"; - case 18: return "eighteen"; - case 14: part = 4; - case 16: if (part == 1) part = 6; - case 17: if (part == 1) part = 7; - case 19: if (part == 1) part = 9; - return SmallNumName(part) + "teen"; - } - - if (num > 19 && num < 100) { - int f_digit = num / 10; - StringBuilder name = new StringBuilder(); - - switch (f_digit) { - case 2: name.append("twenty"); break; - case 3: name.append("thirty"); break; - case 4: name.append("forty"); break; - case 5: name.append("fifty"); break; - case 8: name.append("eighty"); break; - - default: name.append(SmallNumName(f_digit)).append("ty"); break; - } - return num % 10 != 0 ? name + "-" + SmallNumName(num % 10) : name.toString(); - } - return "ERR"; - } -} |
