summary refs log tree commit diff stats
path: root/java/code/AddTwoNumbers.java
diff options
context:
space:
mode:
authorSudipto Mallick <>2024-01-02 02:12:16 +0000
committerSudipto Mallick <>2024-01-02 02:12:16 +0000
commita70e0a59817ce06a3dd23b3750ae16ee6660deaf (patch)
tree0843bf4d30edf22c9c4c27ff4887351c85993ccd /java/code/AddTwoNumbers.java
parent63c589e826829c5f47f95a5642531e02b2b2c8f7 (diff)
downloadzadania-a70e0a59817ce06a3dd23b3750ae16ee6660deaf.tar.gz
Add Java assignments to the repository
.gitignore: The build files, files left by editors like *~ and the PDF
documents for the assignments are to be ignored for the purposes of
version control.

README.rst: Rewrite, with one line description in Chinese.

java/alist.txt: List of assignments, sorted in the order of the list of
assignments, with the ones with completed documentation marked with `#`.

java/buildall: Script that will build all of the assignments into one
PDF file; to be rehauled for the final document.

code/*.java: The Java source code for the assignments.

dbld: Script that builds a PDF document for a single assignment.

index.typ: The list of assignments, subject to update for further
refinement and inclusion of yet more assignments.

jbld: Script that compiles code for a single Java assignment.

output/*.typ: Typst file containing the output (sessions) obtained from
running the individual Java assignments.

state.sql: Future alternative to `alist.txt`, under development.

template.typ: The Typst template used across all of assignment,
containing common code for the uniform styling, such as page border.

text/*.typ: Typst file documenting each Java assignment.

vendor/Java.sublime-syntax: Updated Sublime Text syntax file for Java,
used for newer syntax features, such as `var`, not yet available in
syntaxes shipped with Typst.

vendor/gr.tmTheme: A grayscale TextMate theme to be used for code in the
documents generated by Typst suitable for black and white printing.

wltd: Difference between the files in `code/` and `text/`, and `code/`
and `output`; need to be rewritten along with `state.sql`.
Diffstat (limited to 'java/code/AddTwoNumbers.java')
-rw-r--r--java/code/AddTwoNumbers.java81
1 files changed, 81 insertions, 0 deletions
diff --git a/java/code/AddTwoNumbers.java b/java/code/AddTwoNumbers.java
new file mode 100644
index 0000000..3c1b3e8
--- /dev/null
+++ b/java/code/AddTwoNumbers.java
@@ -0,0 +1,81 @@
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.Scanner;
+import java.util.InputMismatchException;
+
+class Number {
+    private double value;
+    Number(double n) {
+        value = n;
+    }
+    double valueOf() {
+        return value;
+    }
+}
+
+class ArithmeticOperations {
+    static Number add(Number a, Number b) {
+        return new Number(a.valueOf() + b.valueOf());
+    }
+}
+
+class AddTwoNumbers {
+    static void process(double a, double b) {
+        Number n1 = new Number(a), n2 = new Number(b);
+        System.out.println(n1.valueOf() + " + " + n2.valueOf() + " = " +
+            ArithmeticOperations.add(n1, n2).valueOf());
+    }
+}
+
+class AddTwoNumbersCLI extends AddTwoNumbers {
+    public static void main(String args[]) {
+        if (args.length != 2) {
+            System.err.println("Usage: AddTwoNumbersCLI first-number second-number");
+            System.exit(1);
+        }
+        try {
+            System.out.println("Taking input from CLI arguments:");
+            var v1 = Double.parseDouble(args[0]);
+            var v2 = Double.parseDouble(args[1]);
+            process(v1, v2);
+        } catch (NumberFormatException e) {
+            System.err.println("Invalid numbers");
+        }
+    }
+}
+
+class AddTwoNumbersScan extends AddTwoNumbers {
+    public static void main(String args[]) {
+        try {
+            System.out.println("Taking input using java.util.Scanner:");
+            var sc = new Scanner(System.in);
+            System.out.print("Enter first number: ");
+            var v1 = sc.nextDouble();
+            System.out.print("Enter second number: ");
+            var v2 = sc.nextDouble();
+            process(v1, v2);
+        } catch (InputMismatchException e) {
+            System.err.println("Invalid numbers");
+        }
+    }
+}
+
+class AddTwoNumbersBuf extends AddTwoNumbers {
+    public static void main(String args[]) {
+        try {
+            System.out.println("Taking input using java.io.BufferedReader:");
+            var r = new BufferedReader(new InputStreamReader(System.in));
+            System.out.print("Enter first number: ");
+            var v1 = Double.parseDouble(r.readLine());
+            System.out.print("Enter second number: ");
+            var v2 = Double.parseDouble(r.readLine());
+            process(v1, v2);
+        } catch (NumberFormatException e) {
+            System.err.println("Invalid numbers");
+        } catch (IOException e) {
+            System.err.println("I/O error occured while reading input.");
+        }
+    }
+}
+