不使用系统自带的BigInteger如何实现大整数相减
本篇内容主要讲解“不使用系统自带的BigInteger如何实现大整数相减”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“不使用系统自带的BigInteger如何实现大整数相减”吧!
成都创新互联公司是一家专业提供梅里斯企业网站建设,专注与网站建设、成都网站建设、H5技术、小程序制作等业务。10年已为梅里斯众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。
第一道题目: 字符串分割,不准使用系统自带的分割函数。
public class Myspilt { public static void main(String[] args) { String source = "abcdabeefabfgeeabcfffdsfsa"; // abcdabeefabfgeeabcfffdsfsa String target = "ab"; myspilt(source, target); } public static void myspilt(String source, String target) { char[] sourceCharArray = source.toCharArray(); char[] targetCharArray = target.toCharArray(); StringBuffer stringBuffer = new StringBuffer(); Listresult = new ArrayList<>(); for (int i = 0; i < source.length(); i++) { int j = 0; for (; j < target.length() && i + j < source.length(); j++) { if (sourceCharArray[i + j] != targetCharArray[j]) { break; } } if (j == targetCharArray.length) { if (stringBuffer.length() > 0) { result.add(stringBuffer.toString()); stringBuffer.setLength(0); } i = i + j - 1; } else { stringBuffer.append(sourceCharArray[i]); } } if (stringBuffer.length() > 0) { result.add(stringBuffer.toString()); } System.out.println("end"); } }
第二道题目: 大整数相减,不准使用系统自带的BigInteger 来计算。
class App1 { // 计算 a - b public static void main(String[] args) { String a = "454656875457421545474578457"; String b = "12454578787878454744545454578454578474516938271458457214"; mySubtract(a, b); String a1 = "1000000000000000000"; String b1 = "999999999"; mySubtract(a1, b1); } public static void mySubtract(String a, String b) { BigInteger a1 = new BigInteger(a); BigInteger b1 = new BigInteger(b); System.out.println(a1.subtract(b1).toString()); boolean altb = false; if (a.length() < b.length() || (a.length() == b.length() && a.compareTo(b) < 0)) { altb = true; String tmp = a; a = b; b = tmp; } boolean borrow = false; StringBuilder sb = new StringBuilder(a.length()); for (int i = a.length() - 1, j = b.length() - 1; i >= 0; i--, j--) { char char1 = a.charAt(i); char char2 = '0'; if (j >= 0) { char2 = b.charAt(j); } if (borrow) { char1--; } if (char1 < char2) { borrow = true; sb.append(char1 + 10 - char2); } else { borrow = false; sb.append(char1 - char2); } } String result = sb.reverse().toString(); result = result.replaceAll("^[0]+", ""); if(result.length() == 0){ result = "0" ; } if (altb) { result = "-" + result; } System.out.println(result); } }
到此,相信大家对“不使用系统自带的BigInteger如何实现大整数相减”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
网站栏目:不使用系统自带的BigInteger如何实现大整数相减
本文地址:http://scyanting.com/article/jiposd.html