java代码判断是否中奖

public static void main(String[] args) {
  int[] arr={1,2,9,4,15,6,7};
  int[] cun={15,2,3,9,5,1,7};
  int redn = 0;
  for(int i = 0;i < cun.length-1;i++){        
    int number = cun[i];
    for(int j = 0;j < arr.length-1;j++){
        if(number == arr[i]){
            redn++;
            break ;
        }
    }
}
System.out.print(redn);
}

代码判断arr数组中存在几个cun数组的数字,为什么位置对了而且数字相同才成功,位置不对数字相同不成功啊

这里改成 if(number == arr[j]) i是外层循环的变量,所以只有位置对了才能成功

img

if(number == arr[i]) 要用 arr[j]。你用的i,就是找相同位置相同数字。

  • 以下回答由chatgpt基于相关博客总结生成:

    可以利用两个 for 循环遍历两个数组,再逐一比对每一个元素是否相同,如果相同就加减奖品数目。具体实现如下:

    public class Main {
        public static void main(String[] args) {
            int[] arr1 = {1, 2, 3, 4, 5};
            int[] arr2 = {5, 4, 3, 2, 1};
            int prizeCount = 0; // 记录中奖数
            for (int i = 0; i < arr1.length; i++) {
                if (arr1[i] == arr2[i]) { // 判断元素是否相同
                    prizeCount++; // 如果相同,奖品数目+1
                }
            }
            System.out.println("中奖数目为:" + prizeCount);
        }
    }
    

    但题目中也指出了,如果位置不对但数字相同则不算中奖,如果不考虑数字相同但位置不同的情况,则可以先将两个数组排序,然后再进行比对。具体实现如下:

    import java.util.*;
    
    public class Main {
        public static void main(String[] args) {
            int[] arr1 = {5, 2, 4, 1, 3};
            int[] arr2 = {1, 2, 3, 4, 5};
            int prizeCount = 0; // 记录中奖数
            Arrays.sort(arr1); // 数组排序
            Arrays.sort(arr2);
            int i = 0, j = 0; // i 指针控制数组 arr1 中的下标,j 指针控制数组 arr2 中的下标
            while (i < arr1.length && j < arr2.length) {
                if (arr1[i] == arr2[j]) { // 判断元素是否相同
                    prizeCount++; // 如果相同,奖品数目+1
                    i++; // 增加下标
                    j++;
                } else if (arr1[i] < arr2[j]) { // arr1 元素较小,将其下标向后移动
                    i++;
                } else { // arr2 元素较小,将其下标向后移动
                    j++;
                }
            }
            System.out.println("中奖数目为:" + prizeCount);
        }
    }