aboutsummaryrefslogtreecommitdiff
path: root/Java/Number_Names
diff options
context:
space:
mode:
authorSyndamia <kami02882@gmail.com>2019-07-30 15:32:30 +0300
committerSyndamia <kami02882@gmail.com>2019-07-30 15:32:30 +0300
commita48a6e1c302a5e90235a82e73517cd43f9c1432e (patch)
tree33a0cce43035f6a0100b890199b486827679bd51 /Java/Number_Names
parentfa8afba66b94af7609494fa83371954cea380c0d (diff)
downloadSelf-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/Number_Names')
-rw-r--r--Java/Number_Names/.idea/.gitignore2
-rw-r--r--Java/Number_Names/.idea/.name1
-rw-r--r--Java/Number_Names/.idea/artifacts/Number_Names_jar.xml8
-rw-r--r--Java/Number_Names/.idea/misc.xml6
-rw-r--r--Java/Number_Names/.idea/modules.xml8
-rw-r--r--Java/Number_Names/.idea/vcs.xml6
-rw-r--r--Java/Number_Names/Number_Names.iml11
-rw-r--r--Java/Number_Names/out/artifacts/Number_Names_jar/Number_Names.jarbin0 -> 3021 bytes
-rw-r--r--Java/Number_Names/out/production/Number_Names/META-INF/MANIFEST.MF3
-rw-r--r--Java/Number_Names/out/production/Number_Names/Program.classbin0 -> 4939 bytes
-rw-r--r--Java/Number_Names/src/META-INF/MANIFEST.MF3
-rw-r--r--Java/Number_Names/src/Program.java124
12 files changed, 172 insertions, 0 deletions
diff --git a/Java/Number_Names/.idea/.gitignore b/Java/Number_Names/.idea/.gitignore
new file mode 100644
index 0000000..5c98b42
--- /dev/null
+++ b/Java/Number_Names/.idea/.gitignore
@@ -0,0 +1,2 @@
+# Default ignored files
+/workspace.xml \ No newline at end of file
diff --git a/Java/Number_Names/.idea/.name b/Java/Number_Names/.idea/.name
new file mode 100644
index 0000000..074fff2
--- /dev/null
+++ b/Java/Number_Names/.idea/.name
@@ -0,0 +1 @@
+Number Names \ No newline at end of file
diff --git a/Java/Number_Names/.idea/artifacts/Number_Names_jar.xml b/Java/Number_Names/.idea/artifacts/Number_Names_jar.xml
new file mode 100644
index 0000000..1c7c60a
--- /dev/null
+++ b/Java/Number_Names/.idea/artifacts/Number_Names_jar.xml
@@ -0,0 +1,8 @@
+<component name="ArtifactManager">
+ <artifact type="jar" name="Number_Names:jar">
+ <output-path>$PROJECT_DIR$/out/artifacts/Number_Names_jar</output-path>
+ <root id="archive" name="Number_Names.jar">
+ <element id="module-output" name="Number_Names" />
+ </root>
+ </artifact>
+</component> \ No newline at end of file
diff --git a/Java/Number_Names/.idea/misc.xml b/Java/Number_Names/.idea/misc.xml
new file mode 100644
index 0000000..e0844bc
--- /dev/null
+++ b/Java/Number_Names/.idea/misc.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="11" project-jdk-type="JavaSDK">
+ <output url="file://$PROJECT_DIR$/out" />
+ </component>
+</project> \ No newline at end of file
diff --git a/Java/Number_Names/.idea/modules.xml b/Java/Number_Names/.idea/modules.xml
new file mode 100644
index 0000000..9143bdd
--- /dev/null
+++ b/Java/Number_Names/.idea/modules.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="ProjectModuleManager">
+ <modules>
+ <module fileurl="file://$PROJECT_DIR$/Number_Names.iml" filepath="$PROJECT_DIR$/Number_Names.iml" />
+ </modules>
+ </component>
+</project> \ No newline at end of file
diff --git a/Java/Number_Names/.idea/vcs.xml b/Java/Number_Names/.idea/vcs.xml
new file mode 100644
index 0000000..b2bdec2
--- /dev/null
+++ b/Java/Number_Names/.idea/vcs.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="VcsDirectoryMappings">
+ <mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
+ </component>
+</project> \ No newline at end of file
diff --git a/Java/Number_Names/Number_Names.iml b/Java/Number_Names/Number_Names.iml
new file mode 100644
index 0000000..c90834f
--- /dev/null
+++ b/Java/Number_Names/Number_Names.iml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+ <component name="NewModuleRootManager" inherit-compiler-output="true">
+ <exclude-output />
+ <content url="file://$MODULE_DIR$">
+ <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
+ </content>
+ <orderEntry type="inheritedJdk" />
+ <orderEntry type="sourceFolder" forTests="false" />
+ </component>
+</module> \ No newline at end of file
diff --git a/Java/Number_Names/out/artifacts/Number_Names_jar/Number_Names.jar b/Java/Number_Names/out/artifacts/Number_Names_jar/Number_Names.jar
new file mode 100644
index 0000000..84de4ca
--- /dev/null
+++ b/Java/Number_Names/out/artifacts/Number_Names_jar/Number_Names.jar
Binary files differ
diff --git a/Java/Number_Names/out/production/Number_Names/META-INF/MANIFEST.MF b/Java/Number_Names/out/production/Number_Names/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..8008376
--- /dev/null
+++ b/Java/Number_Names/out/production/Number_Names/META-INF/MANIFEST.MF
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Main-Class: Program
+
diff --git a/Java/Number_Names/out/production/Number_Names/Program.class b/Java/Number_Names/out/production/Number_Names/Program.class
new file mode 100644
index 0000000..20d05f5
--- /dev/null
+++ b/Java/Number_Names/out/production/Number_Names/Program.class
Binary files differ
diff --git a/Java/Number_Names/src/META-INF/MANIFEST.MF b/Java/Number_Names/src/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..8008376
--- /dev/null
+++ b/Java/Number_Names/src/META-INF/MANIFEST.MF
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Main-Class: Program
+
diff --git a/Java/Number_Names/src/Program.java b/Java/Number_Names/src/Program.java
new file mode 100644
index 0000000..ed9ef79
--- /dev/null
+++ b/Java/Number_Names/src/Program.java
@@ -0,0 +1,124 @@
+import java.util.ArrayList;
+import java.util.Scanner;
+
+public class Program {
+
+ public static String[] digits = {"", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
+ public static String[] teens = {"ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"};
+ public static String[] tens = {"ten", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"};
+
+ 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 9223372036854775807 and –9223372036854775808 (any characters that are not numbers and - will result in error)");
+
+ while (true) {
+ try {
+ long n = Long.parseLong(scn.nextLine().trim());
+ System.out.println(NumberName(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 NumberName(long num) {
+ StringBuilder name = new StringBuilder(num < 0 ? "negative " : "");
+ var number_parts = new ArrayList<Long>();
+
+ if (num == 0) return "zero";
+
+ while (num != 0) {
+ number_parts.add(Math.abs(num % 1000));
+ num /= 1000;
+ }
+
+ for (int i = number_parts.size() - 1; i > -1; i--){
+ long curr_num = number_parts.get(i);
+
+ if ((curr_num + "").length() == 3) {
+ name.append(SmallNumberName((int)curr_num / 100)).append(" hundred");
+
+ curr_num %= 100;
+ if (curr_num != 0) name.append(" and ");
+ }
+ name.append(SmallNumberName((int)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(0) / 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(0) / 100 == 0) name.append(" and ");
+ else name.append(", ");
+ }
+ } break;
+ case 4:
+ if (number_parts.get(4) != 0) {
+ name.append(" billion");
+
+ if (number_parts.get(0) != 0 || number_parts.get(1) != 0 || number_parts.get(2) != 0 || number_parts.get(3) != 0) {
+ if (number_parts.get(0) / 100 == 0) name.append(" and ");
+ else name.append(", ");
+ }
+ } break;
+ case 5:
+ if (number_parts.get(5) != 0) {
+ name.append(" billiard");
+
+ if (number_parts.get(0) != 0 || number_parts.get(1) != 0 || number_parts.get(2) != 0 || number_parts.get(3) != 0 || number_parts.get(4) != 0) {
+ if (number_parts.get(0) / 100 == 0) name.append(" and ");
+ else name.append(", ");
+ }
+ } break;
+ case 6:
+ if (number_parts.get(6) != 0) {
+ name.append(" trillion");
+
+ if (number_parts.get(0) != 0 || number_parts.get(1) != 0 || number_parts.get(2) != 0 || number_parts.get(3) != 0 || number_parts.get(4) != 0 || number_parts.get(5) != 0) {
+ if (number_parts.get(0) / 100 == 0) name.append(" and ");
+ else name.append(", ");
+ }
+ } break;
+ }
+ }
+ return name.toString();
+ }
+
+ private static String SmallNumberName(int num) {
+ if (num < 20) {
+ try {
+ return digits[num];
+ } catch (Exception e) {
+ return teens[num % 10];
+ }
+ } else if (num < 100) {
+ return num % 10 == 0 ? tens[(num / 10) - 1] : tens[(num / 10) - 1] + "-" + SmallNumberName(num % 10);
+ }
+ return "ERR";
+ }
+} \ No newline at end of file