From 9a5ca7bc7bc1b57ec0b432744c9dc2ee79638725 Mon Sep 17 00:00:00 2001 From: codejava Date: Mon, 13 Apr 2026 10:40:21 +0300 Subject: [PATCH] Upload files to "java/sum" --- java/sum/Sum.java | 28 ++++++++++++++ java/sum/SumBigDecimalHex.java | 63 ++++++++++++++++++++++++++++++++ java/sum/SumBigIntegerOctal.java | 45 +++++++++++++++++++++++ java/sum/SumDouble.java | 28 ++++++++++++++ java/sum/package-info.java | 7 ++++ 5 files changed, 171 insertions(+) create mode 100644 java/sum/Sum.java create mode 100644 java/sum/SumBigDecimalHex.java create mode 100644 java/sum/SumBigIntegerOctal.java create mode 100644 java/sum/SumDouble.java create mode 100644 java/sum/package-info.java diff --git a/java/sum/Sum.java b/java/sum/Sum.java new file mode 100644 index 0000000..ef35486 --- /dev/null +++ b/java/sum/Sum.java @@ -0,0 +1,28 @@ +package sum; + +/** + * @author Nikita Doschennikov (me@fymio.us) + */ +public class Sum { + + public static void main(String[] args) { + int res = 0; + for (String arg : args) { + StringBuilder builder = new StringBuilder(); + for (char c : arg.toCharArray()) { + if (!Character.isWhitespace(c)) { + builder.append(c); + } else { + res += (!builder.toString().isEmpty()) + ? Integer.parseInt(builder.toString()) + : 0; + builder = new StringBuilder(); + } + } + res += (!builder.toString().isEmpty()) + ? Integer.parseInt(builder.toString()) + : 0; + } + System.out.println(res); + } +} diff --git a/java/sum/SumBigDecimalHex.java b/java/sum/SumBigDecimalHex.java new file mode 100644 index 0000000..6c50146 --- /dev/null +++ b/java/sum/SumBigDecimalHex.java @@ -0,0 +1,63 @@ +package sum; + +import java.math.BigDecimal; +import java.math.BigInteger; + +/** + * @author Nikita Doschennikov (me@fymio.us) + */ +public class SumBigDecimalHex { + + public static void main(String[] args) { + BigDecimal res = new BigDecimal("0"); + for (String arg : args) { + StringBuilder builder = new StringBuilder(); + int idxOfS = -1; + for (char c : arg.toCharArray()) { + if (!Character.isWhitespace(c)) { + if (c == 's' || c == 'S') { + idxOfS = builder.length(); + } + builder.append(c); + } else { + res = res.add(compute(builder.toString(), idxOfS)); + idxOfS = -1; + builder = new StringBuilder(); + } + } + res = res.add(compute(builder.toString(), idxOfS)); + } + System.out.println(res); + } + + static BigDecimal compute(String num, int idxOfS) { + BigDecimal res = BigDecimal.ZERO; + + if (num == null || num.isEmpty()) { + return res; + } else if (num.startsWith("0x") || num.startsWith("0X")) { + num = num.toLowerCase(); + num = num.substring(2); + if (idxOfS != -1) { + idxOfS -= 2; + String mantissaHex = num.substring(0, idxOfS); + String exponentHex = num.substring(idxOfS + 1); + + BigInteger mantissa = new BigInteger(mantissaHex, 16); + BigInteger exponent = new BigInteger(exponentHex, 16); + + res = res.add( + new BigDecimal(mantissa).scaleByPowerOfTen( + exponent.negate().intValueExact() + ) + ); + } else { + res = res.add(new BigDecimal(new BigInteger(num, 16))); + } + } else { + res = new BigDecimal(num); + } + + return res; + } +} diff --git a/java/sum/SumBigIntegerOctal.java b/java/sum/SumBigIntegerOctal.java new file mode 100644 index 0000000..b65b35b --- /dev/null +++ b/java/sum/SumBigIntegerOctal.java @@ -0,0 +1,45 @@ +package sum; + +import java.math.BigInteger; + +/** + * @author Nikita Doschennikov (me@fymio.us) + */ +public class SumBigIntegerOctal { + + public static void main(String[] args) { + BigInteger res = new BigInteger("0"); + for (String arg : args) { + StringBuilder builder = new StringBuilder(); + for (char c : arg.toCharArray()) { + if (!Character.isWhitespace(c)) { + builder.append(c); + } else { + res = res.add(compute(builder.toString())); + + builder = new StringBuilder(); + } + } + res = res.add(compute(builder.toString())); + } + System.out.println(res); + } + + static BigInteger compute(String num) { + BigInteger res = new BigInteger("0"); + int numLength = num.length(); + if (num.isEmpty()) { + res = res.add(BigInteger.ZERO); + } else if ( + num.charAt(numLength - 1) == 'o' || num.charAt(numLength - 1) == 'O' + ) { + res = res.add( + new BigInteger(num.substring(0, num.length() - 1), 8) + ); + } else { + res = res.add(new BigInteger(num)); + } + + return res; + } +} diff --git a/java/sum/SumDouble.java b/java/sum/SumDouble.java new file mode 100644 index 0000000..57fb236 --- /dev/null +++ b/java/sum/SumDouble.java @@ -0,0 +1,28 @@ +package sum; + +/** + * @author Nikita Doschennikov (me@fymio.us) + */ +public class SumDouble { + + public static void main(String[] args) { + double res = 0.0; + for (String arg : args) { + StringBuilder builder = new StringBuilder(); + for (char c : arg.toCharArray()) { + if (!Character.isWhitespace(c)) { + builder.append(c); + } else { + res += (!builder.toString().isEmpty()) + ? Double.parseDouble(builder.toString()) + : 0; + builder = new StringBuilder(); + } + } + res += (!builder.toString().isEmpty()) + ? Double.parseDouble(builder.toString()) + : 0; + } + System.out.println(res); + } +} diff --git a/java/sum/package-info.java b/java/sum/package-info.java new file mode 100644 index 0000000..d4d2abc --- /dev/null +++ b/java/sum/package-info.java @@ -0,0 +1,7 @@ +/** + * Tests for Sum homework + * of Introduction to Programming course. + * + * @author Georgiy Korneev (kgeorgiy@kgeorgiy.info) + */ +package sum;