电商网站的制作流程,石家庄建设局网站怎么打不开,网站建设公司织梦模板下载,免费制作手机网站package sim;import java.math.BigDecimal;
import java.util.Arrays;public class Add1 {/*给定一个由 整数 组成的 非空 数组所表示的非负整数#xff0c;在该数的基础上加一。最高位数字存放在数组的首位#xff0c; 数组中每个元素只存储单个数字。你可以假设除了整数 0 …package sim;import java.math.BigDecimal;
import java.util.Arrays;public class Add1 {/*给定一个由 整数 组成的 非空 数组所表示的非负整数在该数的基础上加一。最高位数字存放在数组的首位 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外这个整数不会以零开头。示例 1输入digits [1,2,3]输出[1,2,4]解释输入数组表示数字 123。示例 2输入digits [4,3,2,1]输出[4,3,2,2]解释输入数组表示数字 4321。示例 3输入digits [0]输出[1]*/public static void main(String[] args) {int[] nums {9,8,7,6,5,4,3,2,1,0};int[] nums1plusOne1(nums);System.out.println(Arrays.toString(nums1));}public static int[] plusOne1(int[] digits) {//[9,8,7,6,5,4,3,2,1,0]//将该数组所有元素变成一个整数String str;for(int i0;idigits.length;i) {strdigits[i];}//str123BigDecimal numsnew BigDecimal(str);BigDecimal onenew BigDecimal(1);numsnums.add(one);//加1 ----9876543211String arrString.valueOf(nums);//987654321//算出应除的位数BigDecimal yznew BigDecimal(10);for(int j0;jarr.length()-1;j) {oneone.multiply(yz);//1000000000}//求每一位挨个往数组中存放int[] resnew int[str.length()];for(int i0;idigits.length;i) { //BigDecimal的divideAndRemainder方法求余返回的是一个数组商余数BigDecimal[] bnums.divideAndRemainder(one);//dig[0]1,res[i]b[0].intValue();//商即为每位数字numsb[1];//余数作为接下来的商oneone.divide(yz);//除数改变少一位即除10}return res;}
} 这里将字符串转成int类型时不要直接用int接收因为可能会存在超出int范围-2147483648~2147483647可以采用BigDecimal来接收就不会报“Exception in thread main java.lang.NumberFormatException: For input string: 98765432101 at java.lang.NumberFormatException.forInputString(Unknown Source)”这个错误了。
以上是我的解题思路还有别的其他思路欢迎诸君共同探讨。