大数运算-ASCII和BigInteger和字符
先来看看平常的知识点转换
String str = "12345"; String character = "P"; int i = 54321; Integer in = 18631; char c = 'Q'; char[] ch = {'1', '4', '5', '9', '7'}; BigInteger bigZero = BigInteger.ZERO; // 将String转换为int int strInt = Integer.valueOf(str).intValue(); int strInt_2 = Integer.parseInt(str); // 将String转换为Integer Integer integer = Integer.valueOf(str); // 将Integer转换为String String newStr = in.toString(); // 将Integer转换为int int fromInteger = in.intValue(); // 将int转换为String String num = String.valueOf(i); String num_2 = Integer.toString(i); String num_3 = "" + i; // 将int转换为Integer Integer integ = new Integer(i); // 将int转换为BigInteger BigInteger big = BigInteger.valueOf(i); // 将String转换为BigInteger BigInteger bigInt = new BigInteger(str); // 将BigInteger转换为String String strZero = bigZero.toString(); // 将String转换为char[] char[] strChar = str.toCharArray(); // 将char[]转换为String String strCh = new String(ch); // 将char转换为String String cStr = String.valueOf(c); // 将String转换为char char fromStr = character.charAt(0);
然后看看ASCII码:https://tool.oschina.net/commons?type=4
import java.math.BigInteger; import java.util.Scanner; /** * * 在实际项目中,我们可能会用字符串来表示无法用普通数据类型(int/float)来存储的数值,在这里我们把它们定义为大数。 * 请实现两个字符串表示的大数相减的程序。例如:1234567890123.1-123456789.1=1234444433334 * 避免使用各语言内置大数处理库,如 Java.math.BigInteger 等。 */ public class test { private static String solution(String line) { /** * 该题不能使用内置大数处理库,那么我们可以简单的使用字符数组储存输入字符串, * 考虑到位数不一致,我们将字符串倒转相减就可以得到结果 */ // please write your code here String[] s = line.split("-"); //错误演示,因为String不可变!!! // char s1[] =s.split("-").toString().toCharArray(); // String str1 = new String(s1[0]); char [] a = new StringBuilder(s[0]).reverse().toString().toCharArray(); char [] b = new StringBuilder(s[1]).reverse().toString().toCharArray(); int [] minus = new int[a.length]; for(int i =0;i<a.length;i++){ int A = a[i]-'0'; // 0的ASCII值=48 其他数字也是依次递增的所以字符运算实际上ASCII值在运算, // 假设a[i]=4则其4即a[i]的ASCII=52 -'0'的ASCII48 = 4 int B; if(i<b.length){ B=b[i]-'0'; }else{ B=0; } minus[i] = A-B; } //处理进位 StringBuilder re = new StringBuilder(); for (int i =0;i<minus.length;i++){ if (minus[i]<0){ minus[i+1]--; minus[i]+=10; } re.append(minus[i]); } return re.reverse().toString().replaceAll("^(0+)",""); } public static void main(String[] args) { char[] arr = {'a','2','3'}; /** 三种方式 * char a[]={'1','2','3'};//可以不指定char类型的个数, * * char []b={'1','2','3'}; * * char []c=new char[]{'1','2','3'}; * * char []d=new char[3]; * d[0]='1'; * d[1]='2'; * d[2]='3'; * /*个人觉得如果是java代码开发就写第三种*/ System.out.println(arr); int test =arr[0]-'1'; //详细查看ASCII值 1=49 a=97 System.out.println(test); Scanner scanner = new Scanner(System.in); String s = scanner.nextLine(); //方法一 String res = solution(s); System.out.println(res); //方法二 String[] sArr = s.split("-"); BigInteger bigInteger1 = new BigInteger(sArr[0]); BigInteger bigInteger2 = new BigInteger(sArr[1]); System.out.println(bigInteger1.subtract(bigInteger2)); } }