diff options
author | Sudipto Mallick <> | 2024-01-02 02:12:16 +0000 |
---|---|---|
committer | Sudipto Mallick <> | 2024-01-02 02:12:16 +0000 |
commit | a70e0a59817ce06a3dd23b3750ae16ee6660deaf (patch) | |
tree | 0843bf4d30edf22c9c4c27ff4887351c85993ccd /java/code/AddTwoNumbers.java | |
parent | 63c589e826829c5f47f95a5642531e02b2b2c8f7 (diff) | |
download | zadania-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.java | 81 |
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."); + } + } +} + |