我的程序是:在一个数组中存储1-10个数字,缺少一个数字你怎么找到它?
我尝试过以下代码,但它没有给出正确的输出。
public class MissingNumber {
public static void main(String[] args) {
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 9, 9, 10 };
System.out.println(arr.length);
int arr2[] = new int[10];
for (int i = 0; i < arr2.length; i++) {
arr2[i] = i + 1;
System.out.println("second array is : " + arr2[i]);
}
//compare two arrays i.e arr and arr2
for(int a=0;a<arr.length;a++){
for(int b=0;b<arr2.length;b++){
if(arr[a]==arr2[b]){
break;
}
else{
System.out.println("missing element is : "+arr[a]);
}
}
}
}
}
我想要丢失的号码。谁能告诉我哪里出错了?
答案 0 :(得分:1)
检查以下代码,了解输入数组是否为任何顺序或随机数
公共类MissingNumber {
public static void main(String[] args) {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 9, 9, 10};
System.out.println(arr.length);
int arr2[] = new int[10];
for (int i = 0; i < arr2.length; i++) {
arr2[i] = i + 1;
}
for (int a = 0; a < arr2.length; a++) {
int count = 0;
for (int b = 0; b < arr.length; b++) {
if (arr2[a] == arr[b]) {
break;
} else {
count++;
}
}
if (arr2.length == count) {
System.out.println("missing element is : " + arr2[a]);
}
}
}
}
答案 1 :(得分:0)
一旦两个阵列匹配,你就会从循环中脱离出来。从逻辑的角度来看,将其更改为(您不需要嵌套循环):
if(arr[a]!=arr2[a]){
System.out.println("missing element is : "+arr[a]);
break;
}
但是如果确定数组从1开始始终按顺序排列,则不需要另一个数组。就这样做:
for(int x=0; x<arr.lengthl x++){
if(arr[x] != (x+1)){
System.out.println("Missing element is " + (x+1));
break;
}
}
答案 2 :(得分:0)
当你找到正确的匹配时,你就破坏了代码:
只需使用以下内容:
if(arr[a] != arr2[b]){
System.out.println("missing element is : "+arr[a]);
break;
}
或者只使用continue
替换break答案 3 :(得分:0)
删除第二个数组,你不需要它,一旦你将元素添加到原始数组,它可能只会导致错误。
基本上,通过以下方式替换您的测试:
if(arr[a] != (a+1)){ System.out.println("Missing element: " + (a+1)); }
不要突破它,因为可能会缺少更多元素。
答案 4 :(得分:0)
它无法正常工作,因为您正在arr
循环查找arr2
内没有的任何值,而arr
中的每个元素都在arr2
中。您希望arr2
作为外部循环。
答案 5 :(得分:0)
我的程序是:在一个数组中存储1-10个数字,缺少一个数字你怎么找到它?
也可以仅使用数组本身来完成。请注意,只有在此问题中指定的其中一个号码丢失时,它才有效。
例如,
让数组为array = {1,2,3,4,5,6,7,9,9,10}
。
现在,让我们假设Array不会总是被排序,因此第一步是对数组进行排序。
Arrays.sort(array);
下一步是简单地检查任何给定位置的数组值,如果value != location + 1
那么这是缺失的数字。
for(int x = 0; x < array.length; x++) {
if(array[x] != x + 1) {
System.out.println("Missing Entry: " + (x+1));
break;
}
}