从代码看,第一个问题是boolean声明的位置错误,应当声明在第一个for循环也就是外层循环内
第二个问题是arr1[index]=arr,比如当循环到arr[3]=4时,会把arr1[0]赋值成4,也就是arr1[0]=4,当循环到arr[7]=4时,在内层循环中比较时,arr[7]=arr1[0],都等于4,所以flag被赋值成false
解决代码如下:
- public static void main(String[] args)
- {
- int[] arr = {2,2,2,4,5,7,98,4}; //旧数组;
- int[] arr1 = {2,2,2,2,2,2,2}; //新数组;
- int[] arr2 = new int[arr.length]; //新增数组
- int index=0; //初始化布尔值和角标值;
- for(int i=0;i<arr.length;i++) //外圈:轮流取得旧数组的值;
- {
- boolean flag=true;
- for(int j=0;j<arr1.length;j++) //内圈:比较外圈值在内圈是否存在;
- {
- if(arr[i]==arr1[j])
- {
- flag=false;
- break;
- }
- }
- if(flag)
- {
- System.out.print(arr[i]+" "); //新数组装数,仅当旧值不等新值时;
- arr2[index]=arr[i];
- index++;
- }
- }
-
- for(int n=0;n<index;n++) //遍历,打印。
- System.out.print(arr2[n]+" ");
复制代码 |