华为OJ高精度数的加减法
2016-03-09 16:02
197 查看
import java.util.Scanner; import javax.swing.text.html.HTMLDocument.HTMLReader.IsindexAction; public class Main { public static String add(String str1, String str2) { if (str1.length() < str2.length()) { String temp = str1; str1 = str2; str2 = temp; } int index = 0; int flag = 0; char[] result = new char[str1.length() > str2.length() ? str1.length() : str2.length()]; while (str1.length() > index && str2.length() > index) { int sum = str1.charAt(str1.length() - index - 1) + str2.charAt(str2.length() - index - 1) - '0' + flag; if (sum > '9') { result[result.length - index - 1] = (char) (sum - 10); flag = 1; } else { result[result.length - index - 1] = (char) sum; flag = 0; } index++; } if (str1.length() >= index) { for (int i = index; i < str1.length(); i++) { int sum = str1.charAt(str1.length() - index - 1) + flag; if (sum > '9') { result[result.length - index - 1] = (char)(sum - 10); flag = 1; }else { result[result.length - index - 1] = (char)(sum); flag = 0; } index++; } } if (flag == 1) { return "1" + new String(result); }else { return new String(result); } } public static String subtract(String str1, String str2){ String sign = ""; if (str1.length() < str2.length()) { String temp = str1; str1 = str2; str2 = temp; sign = "-"; }else if (str1.length() == str2.length()) { if (str1.compareTo(str2)<0) { String temp = str1; str1 = str2; str2 = temp; sign = "-"; } } int index = 0; int flag = 0; char[] result = new char[str1.length()>str2.length()?str1.length():str2.length()]; while (str1.length()>index && str2.length()>index) { int sum = str1.charAt(str1.length()-index-1)-str2.charAt(str2.length()-index-1)+'0' - flag; if (sum<'0') { flag = 1; result[result.length-index-1] = (char)(sum + 10); }else { flag = 0; result[result.length-index-1] = (char)(sum); } index++; } if (str1.length()>=index) { for (int i = index; i < str1.length(); i++) { int sum = (char)(str1.charAt(str1.length()-index-1)-flag); if (sum<'0') { result[result.length-index-1] = (char)(sum+10); flag = 1; }else { result[result.length-index-1] = (char)sum; flag = 0; } index++; } } return sign + new String(result); } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String str1 = scanner.next(); String str2 = scanner.next(); if (str1.contains("-") && str2.contains("-")) { System.out.println("-" + add(str1.substring(1), str2.substring(1))); } else if (!str1.contains("-") && !str2.contains("-")) { System.out.println(add(str1, str2)); } else { String result = ""; if (str1.contains("-")) { result = subtract(str2,str1.substring(1)).replace("0", ""); if (result.length() == 0) { result = "0"; } System.out.println(result); } else { result = subtract(str1, str2.substring(1)).replace("0", ""); if (result.length() == 0) { result = "0"; } System.out.println(result); } } } }
相关文章推荐
- APP测试
- 视频直播应用的竞争分析
- ArtifactdescriptorException: failed to read artifact for xxxxxx.
- 对反编译的Android apk 并再次打包
- Java中String类的方法及说明
- Device eth0 does not seem to be present, delaying initialization(vmware 拷贝引起)
- Android 反编译
- C#动态选择调用某个指定内部函数
- AJAX基础总结(参考w3school)
- 读书笔记---HTML5实战 MARCO CASARIO(后六章)
- org.w3c.dom(java dom)解析XML文档
- css3技巧——产品列表之鼠标滑过效果(一)
- 3月7日高项作业(信息化基础和信息系统服务管理)
- codeforces 630B Moore's Law
- ORA-01017: invalid username/password; logon denied
- Android之数据统计TalkingData集成
- 81. Search in Rotated Sorted Array II
- 解析nginx负载均衡
- android graphic(12)—display上层相关概念、关系
- android 特效控件,百分百干货系列 (2) 掌控ScrollView的滑动