我得到了这样的输出
线程“主”中的异常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
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);
}
}
答案 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);
}