【发布时间】:2021-09-14 03:38:58
【问题描述】:
如何处理异常?
问:给定一个表示为数字列表的非负数,将数字加 1(增加数字表示的数字)。存储数字时,最高有效位是数组的第一个元素。
输入:
N = 3
arr[] = {1, 2, 4}
输出:
1 2 5
解释:
124+1 = 125
// { Driver Code Starts
import java.io.*;
import java.util.*;
class GFG {
public static void main(String args[]) throws IOException {
BufferedReader read =
new BufferedReader(new InputStreamReader(System.in));
int t = Integer.parseInt(read.readLine());
while (t-- > 0) {
int N = Integer.parseInt(read.readLine());
String S[] = read.readLine().split(" ");
ArrayList<Integer> arr = new ArrayList<>();
for(int i=0 ; i<N ; i++)
arr.add(Integer.parseInt(S[i]));
Solution ob = new Solution();
ArrayList<Integer> res = ob.increment(arr,N);
for(int i=0; i<res.size(); i++)
System.out.print(res.get(i) + " ");
System.out.println();
}
}
}// } Driver Code Ends
//User function Template for Java
class Solution {
static ArrayList<Integer> increment(ArrayList<Integer> arr , int N)//It //is mendetory that return type should be ArrayList of integers.
{
String s = "";
String fs ="";
for(int i =0 ; i<N ; i++)
s = s+arr.get(i);
int cal = Integer.parseInt(s);
cal = cal+1;
fs= Integer.toString(cal);
ArrayList<Integer> al = new ArrayList<>();
for(int i =0 ;i<fs.length() ; i++)
al.add(Character.getNumericValue(fs.charAt(i)));
return al;
}
};
【问题讨论】:
-
你有什么问题?
-
基本上这个数字太大而无法表示为 Java
int。它大于 2^31。 -
我提到了上面的问题。
-
@bruno 如果您需要绝对值大于 2^31 的数字,请使用
long而不是int。除非练习的目的是将字符串作为数字处理(所以数字故意那么大) -
如果需要处理
long范围之外的数字,可以使用BigInteger。
标签: java data-structures collections