aboutsummaryrefslogtreecommitdiff
path: root/Java/Beginer training/src/Training.java
diff options
context:
space:
mode:
Diffstat (limited to 'Java/Beginer training/src/Training.java')
-rw-r--r--Java/Beginer training/src/Training.java80
1 files changed, 78 insertions, 2 deletions
diff --git a/Java/Beginer training/src/Training.java b/Java/Beginer training/src/Training.java
index 95886d0..7fb6ca6 100644
--- a/Java/Beginer training/src/Training.java
+++ b/Java/Beginer training/src/Training.java
@@ -1,8 +1,84 @@
-import java.io.*;
+import java.util.ArrayList;
+import java.math.*;
public class Training {
public static void main(String args[]){
- PrintFibonacci(7);
+ //PrintFibonacci(7);
+ System.out.println(NumberName(6783508));
+ }
+
+ public static String NumberName(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 / 10 == 0) name.append("and ");
+ }
+ name.append(SmallNumName(curr_num));
+
+ switch (i) {
+ case 1: name.append(" thousand "); break;
+ case 2: name.append(" million "); break;
+ case 3: name.append(" milliard "); 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 > 20 && 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 5: name.append("fifty "); break;
+ case 8: name.append("eighty "); break;
+
+ default: name.append(SmallNumName(f_digit)).append("ty "); break;
+ }
+
+ return name + SmallNumName(num % 10);
+ }
+ return "ERR";
}
public static void PrintFibonacci (int length) {