• 大数运算-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));
        }
    
    }
  • 相关阅读:
    CMD文件分析
    #ifdef __cplusplus
    nginx查看post请求日志
    JNI常见错误1
    include、include_once与require、require_once区别
    在Windows下利用Eclipse调试FFmpeg
    在Windows下利用MinGW编译FFmpeg
    图文详解YUV420, yuv格式2
    yuv rgb 像素格式1
    libyuv 编译for ios
  • 原文地址:https://www.cnblogs.com/yangj-Blog/p/14588188.html
Copyright © 2020-2023  润新知