本文共 4070 字,大约阅读时间需要 13 分钟。
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); } } }}
转载地址:http://qsnws.baihongyu.com/