объединенная сумма двух массивов целых чисел - PullRequest
0 голосов
/ 02 сентября 2018

я получаю такой вывод

Исключение в потоке "main" java.util.InputMismatchException at 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 и n и мы должны объединить каждый массив и выполнить сложение двух массивов, которые мы получили например:

м = 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 голосов
/ 02 сентября 2018

В коде я предлагаю вам остановить поток сканера с помощью некоторого стоп-слова, в этом примере используется 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);
}
0 голосов
/ 02 сентября 2018

вы можете построить число из массивов и сделать сумму, как показано ниже: например, преобразовать массив int в String, а затем String в целое число с помощью метода parseInt ().

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);
        }

}
0 голосов
/ 02 сентября 2018

Для конкатенации строк в цикле лучше использовать 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));
}
0 голосов
/ 02 сентября 2018

Другой подход: вы можете попробовать воспользоваться конкатенацией строк.

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);

    }
}
...