我对java还是个新手,一直在尝试编写代码,使用两个不同的公共值数组并输出两个数组的公共值,但我一直收到以下错误消息:
线程中的异常"主";您的共同价值观是:0您的共同值为:0您的常用值为:0Your common values为:0java.lang.ArrayIndexOutOfBoundsException:的索引5越界长度5在HomworkTestingQ.main(HomworkTestingQ.java:18(
Scanner sc = new Scanner(System.in);{
int n = 5;
int m = 5;
int[] array1 = new int[m];
int[] array2 = new int[n];
System.out.println("Enter the first array: ");
n=sc.nextInt();
System.out.println("Enter the second array");
m=sc.nextInt();
for(int i = 0; i < array1.length; i++) {
for(int j = 0; i < array2.length; j++) {
if(array1[i] == array2[j]) {
System.out.println("Your common values are: " + array1[i+j] );
}
}
}
}
}
}
我修复了您的代码:
Scanner sc = new Scanner(System.in);
int n = 5;
int m = 5;
int[] array1 = new int[m];
int[] array2 = new int[n];
System.out.println("Enter the first array: ");
for (int i = 0; i < n; i++) {
array1[i] = sc.nextInt();
}
System.out.println("Enter the second array");
for (int i = 0; i < n; i++) {
array2[i] = sc.nextInt();
}
for (int item : array1) {
for (int value : array2) {
if (item == value) {
System.out.println("Your common values are: " + item);
}
}
}
我认为问题在于您在这里添加了数组迭代器:
array1[i+j]
i+j相加后大于array1的长度。
顺便说一句,你的数组并没有像我认为的那样基于进行填充
System.out.println("Enter the first array: ");
n=sc.nextInt();
System.out.println("Enter the second array");
m=sc.nextInt();
我只是在猜测,也许你以后还有更多的事情要做。
您不需要将索引相加。。由于array1[i]等于array2[j],因此打印其中任意一个:
for(int i=0;i<array1.length;i++){
for(int j=i+1;j<array2.length;j++){
if(array1[i]==array2[j]) int commonValue = array1[i];
return commonValue; // or print it
}
}
第一个问题
扫描m
和n
的值时,数组的大小不会改变,因为java是按值传递的,数组的尺寸是值,而不是变量
所以你应该做一些类似的事情-
int m = scanner.nextInt();
int[] arr = new int[m];
第二个问题
System.out.println("Your common values are: " + array1[i+j] );
这将超出范围,也许你应该这样做-
System.out.println("Your common values are: " + array1[i] );