关注
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); String num1 = input.nextLine(); String num2 = input.nextLine(); String sum = add(num1, num2); System.out.println(sum); } /* * 1234567890123456789012345678901234567890. * 1234567890123456789012345678901234567890 * 1000000000100000000010000000001000000000. * 1000000000100000000010000000001000000000 */ /* * 2234567890223456789022345678902234567890. * 223456789022345678902234567890223456789 */ private static String[] split(String str) { for (int i = 0; i < str.length(); i++) { if (str.charAt(i) == '.') { return new String[] { str.substring(0, i), str.substring(i + 1) }; } } return new String[] { str, "" }; } private static String add(String num1, String num2) { /*String[] number1 = num1.split("\\."); String[] number2 = num2.split("\\.");*/ String[] number1 = split(num1); String[] number2 = split(num2); String nums1 = number1[0]; String nums2 = number2[0]; String dot1 = number1[1]; String dot2 = number2[1]; int dlength1 = dot1.length(); int dlength2 = dot2.length(); int min; int[] dnums = new int[dlength1 > dlength2 ? dlength1 : dlength2]; if (dlength1 > dlength2) { min = dlength2; for (int i = min; i < dlength1; i++) { dnums[i] = dot1.charAt(i) - '0'; } } else { min = dlength1; for (int i = min; i < dlength2; i++) { dnums[i] = dot2.charAt(i) - '0'; } } min--; int top = 0; while (min >= 0) { int sum = (dot1.charAt(min) + dot2.charAt(min) + dnums[min] - 2 * '0'); if (sum >= 10) { dnums[min] = sum % 10; if (min != 0) { dnums[--min] = sum / 10; } else { top = sum / 10; } } else { dnums[min--] = sum; } } int[] num = new int[(nums1.length() > nums2.length() ? nums1.length() : nums2.length()) + 1]; int i = nums1.length() - 1; int j = nums2.length() - 1; int k = num.length - 1; num[k] = top; while (i >= 0 && j >= 0) { int sum = (nums1.charAt(i) + nums2.charAt(j) + num[k] - 2 * '0'); if (sum >= 10) { num[k] = sum % 10; num[--k] = sum / 10; } else { num[k--] = sum; } i--; j--; } if (i < 0 || j >= 0) { while (j >= 0) { int sum = (nums2.charAt(j) + num[k]) - '0'; if (sum >= 10) { num[k] = sum % 10; num[--k] = sum / 10; } else { num[k--] = sum; } j--; } } else if (i >= 0 || j < 0) { while (i >= 0) { int sum = (nums1.charAt(i) + num[k]) - '0'; if (sum >= 10) { num[k] = sum % 10; num[--k] = sum / 10; } else { num[k--] = sum; } i--; } } StringBuilder sb = new StringBuilder(); StringBuilder sb1 = new StringBuilder(); boolean sign = false, sign1 = false; for (int s : num) { if (s != 0) sign = true; if (sign) { sb.append(s); } } for (int h = dnums.length - 1; h >= 0; h--) { if (dnums[h] != 0) sign1 = true; if (sign1) { sb1.append(dnums[h]); if (h == 0) sb1.append("."); } } sb.append(sb1.reverse()); return sb.toString(); } } 思路是不难,代码量太大了吧!!!
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
苦也:佬投的是日常实习吗,是在官网投的吗,我也想找段实习沉淀一下,投了根本没消息
点赞 评论 收藏
分享
09-24 10:27
焦作工贸职业学院 Java
我的offer呢😡:这不才9月吗,26到明年毕业前能一直找啊 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 互联网行业现在还值得去吗 #
36647次浏览 261人参与
# 落户对你的求职选择影响有多大 #
29258次浏览 101人参与
# 虾皮开奖 #
42502次浏览 202人参与
# 你小时候最想从事什么职业 #
132442次浏览 1971人参与
# 第一次找实习,我建议__ #
27859次浏览 348人参与
# 非技术2024笔面经 #
435315次浏览 4881人参与
# 参加完秋招的机械人,还参加春招吗? #
80454次浏览 614人参与
# 机械人的工作环境真的很差吗 #
35791次浏览 132人参与
# 牛友的志愿填报指南 #
41617次浏览 196人参与
# 韶音科技求职进展汇总 #
62286次浏览 506人参与
# 从mentor身上学到了__ #
23487次浏览 386人参与
# 你怎么评价今年的春招? #
144169次浏览 1392人参与
# 外出实习被同学举报 #
6184次浏览 39人参与
# 除了主业以外,你还有哪些其他收入? #
36483次浏览 303人参与
# 打工人的至爽时刻or至暗时刻 #
43018次浏览 223人参与
# 材料进Fab厂真的劝退吗? #
60860次浏览 209人参与
# 你认为工作的意义是什么 #
206360次浏览 1309人参与
# 华为海思工作体验 #
36213次浏览 146人参与
# 秋招暂停,我将对以下公司做出处罚__ #
32108次浏览 147人参与
# 如果今天是你的last day,你会怎么度过? #
49908次浏览 304人参与
海康威视公司福利 1235人发布