线程 "main" java.lang.NumberFormatException 中的异常:对于输入字符串:“3727284434”

Exception in thread "main" java.lang.NumberFormatException: For input string: "3727284434"

如何处理异常?

问:给定一个以数字列表表示的非负数,将数字加 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;
      
    }
};

试试这个。

static ArrayList<Integer> increment(ArrayList<Integer> arr , int N) {
    int carry = 1;
    ArrayList<Integer> result = new ArrayList<>(arr);
    for (int i = result.size() - 1; i >= 0 && carry > 0; --i) {
        int sum = result.get(i) + carry;
        result.set(i, sum % 10);
        carry = sum / 10;
    }
    if (carry > 0)
        result.add(0, carry);
    return result;
}

int[] in = {3, 7, 2, 7, 2, 8, 4, 4, 3, 4};
ArrayList<Integer> arr = new ArrayList<>();
for (int i : in)
    arr.add(i);
System.out.println(increment(arr, arr.size()));

输出:

[3, 7, 2, 7, 2, 8, 4, 4, 3, 5]