两个整数数组的串联和

时间:2018-09-02 17:36:16

标签: java int parseint

我得到了这样的输出

  

线程“主”中的异常java.util.InputMismatchException在   java.util.Scanner.throwFor(Scanner.java:864)在   java.util.Scanner.next(Scanner.java:1485)在   java.util.Scanner.nextInt(Scanner.java:2117)在   java.util.Scanner.nextInt(Scanner.java:2076)在   Main.main(Main.java:9)

我们取了两个大小分别为m和n的数组 我们必须连接每个数组,并对两个数组进行加法运算 例如:

  

m = 4,n = 5

  • 1 2 4 5
  • 5 7 3 12 6
  • 输出为-> 574371
  

1245 + 573126 = 574371

import java.util.*;
public class Main {

    public static void main(String[] args) {
        //Your Code Here

Scanner s=new Scanner (System.in);
int i,j,cc,dd;
int m=s.nextInt();
int n=s.nextInt();
int a[]=new int[m];
int b[]=new int[n];
for(i=0;i<m;i++)
{
    a[i]=s.nextInt();

}
for(j=0;j<n;j++)
{
    b[j]=s.nextInt();
}
String s1=Arrays.toString(a);
String s2=Arrays.toString(b);

cc=Integer.parseInt(s1);
dd=Integer.parseInt(s2);

System.out.print(cc+dd);



    }
}

4 个答案:

答案 0 :(得分:3)

另一种方法:您可以尝试利用字符串连接。

import java.util.*;

public class Hello {

    public static void main(String[] args) {
        // Your Code Here

        Scanner s = new Scanner(System.in);
        int i, j, cc, dd;
        int m = s.nextInt();
        int n = s.nextInt();
        // int a[]=new int[m];
        // int b[]=new int[n];
        String a = "";
        String b = "";
        for (i = 0; i < m; i++) {
            a += s.next();

        }
        for (j = 0; j < n; j++) {
            b += s.next();
        }
        // String s1=Arrays.toString(a);
        // String s2=Arrays.toString(b);
        //
        cc = Integer.parseInt(a);
        dd = Integer.parseInt(b);

        System.out.print(cc + dd);

    }
}

答案 1 :(得分:1)

对于循环中的字符串连接,最好使用StringBuilder

try (Scanner scan = new Scanner(System.in)) {
    final Function<Integer, Integer> readValue = digits -> {
        StringBuilder buf = new StringBuilder();

        for (int i = 0; i < digits; i++)
            buf.append(scan.nextInt());

        return Integer.parseInt(buf.toString());
    };

    int m = scan.nextInt();
    int n = scan.nextInt();
    System.out.println(readValue.apply(m) + readValue.apply(n));
}

或完全使用Streams

try (Scanner scan = new Scanner(System.in)) {
    final Function<Integer, Integer> readValue = digits ->
            Integer.parseInt(IntStream.range(0, digits)
                                      .map(i -> scan.nextInt())
                                      .mapToObj(String::valueOf)
                                      .collect(Collectors.joining()));

    int m = scan.nextInt();
    int n = scan.nextInt();
    System.out.println(readValue.apply(m) + readValue.apply(n));
}

答案 2 :(得分:0)

您可以从数组构建数字,并且可以进行如下求和: 例如,使用parseInt()方法将int数组转换为String,然后将String转换为整数。

public static void main(String args[]) {
    int[] arr1 = {1 ,2, 4 ,5};
    int[] arr2 = {5 ,7, 3 ,12 ,6};

    long sum = getNumber(arr1) + getNumber(arr2);
    System.out.println(sum);

        }

        public static int getNumber(int[ ] arr) {
            String number ="";
            for(int i : arr) {
                number = number + i;
            }
            return Integer.parseInt(number);
        }

}

答案 3 :(得分:0)

在代码中,建议您使用一些停用词来停止扫描器流,此示例使用empty string"" 不必为每次迭代将字符串值解析为整数。 阅读后,我将进行下一步。

首先,代码将根据您的示例替换数字之间的所有空格。

第二,使用正则表达式过滤输入值。

第三,那么我们只有数字,我们应该将它们转换为整数值,而不会出现任何问题。

最后一步是摘要,它计算输入和打印结果的总和。

public static void main(String[] args) {
    ArrayList<String> arrays = new ArrayList<>();
    Scanner scanner = new Scanner(System.in);

    String bufferLine;
    while (scanner.hasNextLine() && !Objects.equals(bufferLine = scanner.nextLine(), "")) {
        arrays.add(bufferLine);
    }

    int sum = arrays.stream()
            .map(s -> s.replace(" ",""))
            .filter(s -> s.matches("\\d+"))
            .mapToInt(Integer::valueOf)
            .sum();
    System.out.println(sum);
}