Java 在数组之间查找相似值

Java 在数组之间查找相似值,java,arrays,Java,Arrays,我想把一个简单的程序放在一起,它可以接受x个数量的输入,将它们放在一个数组中,在不同的数组中再次执行相同的操作,然后检查两个列表中出现的输入 对于获取输入,我想不出一种方法让它继续接受任意数量的输入,并且只在输入显示“停止”或“结束”或类似内容时停止 我是自学成才的初学者,所以请原谅我在这方面的无知 我还没有为第二个阵列进行设置,但知道如何进行设置(我相当确定)。我只是停留在输入问题上,以及如何比较输入 //input of codes System.out.println("How m

我想把一个简单的程序放在一起,它可以接受x个数量的输入,将它们放在一个数组中,在不同的数组中再次执行相同的操作,然后检查两个列表中出现的输入

对于获取输入,我想不出一种方法让它继续接受任意数量的输入,并且只在输入显示“停止”或“结束”或类似内容时停止

我是自学成才的初学者,所以请原谅我在这方面的无知

我还没有为第二个阵列进行设置,但知道如何进行设置(我相当确定)。我只是停留在输入问题上,以及如何比较输入

//input of codes
    System.out.println("How many codes do you wanna put in?");
    x = input.nextInt();
    int[] binList = new int[x];
    System.out.println("Okay. Enter your codes:");
    for (int n = 0; n < x; n++) {
        binList[n] = input.nextInt();
    }

    //sort codes
    Arrays.sort(binList);

    //display codes
    System.out.println("Here are your codes:");
    for (int n = 0; n < x; n++) {
        System.out.println(binList[n]);
//代码的输入
System.out.println(“您想输入多少代码?”);
x=input.nextInt();
int[]binList=新的int[x];
System.out.println(“好的,输入代码:”);
对于(int n=0;n
您可以按如下方式执行:

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Test {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        // get first list elements
        List<Integer> list1 = getCodes(sc);
        // get second list elements
        List<Integer> list2 = getCodes(sc);

        sc.close();

        // display common codes
        System.out.println("Common elements are: ");
        list1.retainAll(list2);
        for (Integer code : list1) {
            System.out.println(code);
        }
    }

    /**
     * Reads input from console.
     * 
     * @param sc
     * @return
     */
    private static List<Integer> getCodes(Scanner sc) {
        System.out.println("How many codes do you wanna put in?");
        int n = sc.nextInt();
        List<Integer> list = new ArrayList<>();
        System.out.println("Okay. Enter your codes:");
        for (int i = 0; i < n; i++) {
            list.add(sc.nextInt());
        }
        return list;
    }
}
import java.util.ArrayList;
导入java.util.List;
导入java.util.Scanner;
公开课考试{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
//获取第一个列表元素
列表1=获取代码(sc);
//获取第二个列表元素
列表2=获取代码(sc);
sc.close();
//显示通用代码
System.out.println(“公共元素为:”);
清单1.保留(清单2);
for(整数代码:list1){
System.out.println(代码);
}
}
/**
*从控制台读取输入。
* 
*@param sc
*@返回
*/
专用静态列表获取代码(扫描仪sc){
System.out.println(“您想输入多少代码?”);
int n=sc.nextInt();
列表=新的ArrayList();
System.out.println(“好的,输入代码:”);
对于(int i=0;i
您可以按如下方式执行:

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Test {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        // get first list elements
        List<Integer> list1 = getCodes(sc);
        // get second list elements
        List<Integer> list2 = getCodes(sc);

        sc.close();

        // display common codes
        System.out.println("Common elements are: ");
        list1.retainAll(list2);
        for (Integer code : list1) {
            System.out.println(code);
        }
    }

    /**
     * Reads input from console.
     * 
     * @param sc
     * @return
     */
    private static List<Integer> getCodes(Scanner sc) {
        System.out.println("How many codes do you wanna put in?");
        int n = sc.nextInt();
        List<Integer> list = new ArrayList<>();
        System.out.println("Okay. Enter your codes:");
        for (int i = 0; i < n; i++) {
            list.add(sc.nextInt());
        }
        return list;
    }
}
import java.util.ArrayList;
导入java.util.List;
导入java.util.Scanner;
公开课考试{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
//获取第一个列表元素
列表1=获取代码(sc);
//获取第二个列表元素
列表2=获取代码(sc);
sc.close();
//显示通用代码
System.out.println(“公共元素为:”);
清单1.保留(清单2);
for(整数代码:list1){
System.out.println(代码);
}
}
/**
*从控制台读取输入。
* 
*@param sc
*@返回
*/
专用静态列表获取代码(扫描仪sc){
System.out.println(“您想输入多少代码?”);
int n=sc.nextInt();
列表=新的ArrayList();
System.out.println(“好的,输入代码:”);
对于(int i=0;i
下面是一个答案,说明如何使用
Set
找到类似的数组元素。它从两个
int
数组开始,将值放入两个不同的
Set
集合,然后遍历一个集合(不管是哪一个,我的示例是遍历
setOne
)查找两个集合中存在的项目,最后跟踪名为
itemsInBothSets
的第三个新集合中的匹配项

int[] one = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int[] two = new int[]{2, 4, 6, 8, 10};

Set<Integer> setOne = new HashSet<>();
for (int i : one) {
    setOne.add(i);
}

Set<Integer> setTwo = new HashSet<>();
for (int i : two) {
    setTwo.add(i);
}

Set<Integer> itemsInBothSets = new HashSet<>();
for (Integer integer : setOne) {
    if (setTwo.contains(integer)) {
        itemsInBothSets.add(integer);
    }
}

System.out.println(itemsInBothSets.toString());

下面的答案显示了如何使用
Set
找到类似的数组元素。它从两个
int
数组开始,将值放入两个不同的
Set
集合中,然后遍历一个集合(不管是哪一个,我的示例是遍历
setOne
)查找两个集合中存在的项目,最后跟踪名为
itemsInBothSets
的第三个新集合中的匹配项

int[] one = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int[] two = new int[]{2, 4, 6, 8, 10};

Set<Integer> setOne = new HashSet<>();
for (int i : one) {
    setOne.add(i);
}

Set<Integer> setTwo = new HashSet<>();
for (int i : two) {
    setTwo.add(i);
}

Set<Integer> itemsInBothSets = new HashSet<>();
for (Integer integer : setOne) {
    if (setTwo.contains(integer)) {
        itemsInBothSets.add(integer);
    }
}

System.out.println(itemsInBothSets.toString());

对于参与的输入:

继续接受任意数量的输入,仅在输入显示“停止”或“结束”或类似内容时停止

对于您的情况,最好使用
arraylist
而不是
array
,因为您正在为
x
(未知)项数进行输入。以下程序从用户处获取输入,直到输入
-1

ArrayList<Integer> binList = new ArrayList<>();
System.out.println("Enter your codes:");
while (true) {
    x = input.nextInt();
    if (x == -1) break;
    binList.add(x);
}
请注意,
size()
方法返回arraylist的大小

样本输入:

样本输出:


对于参与的输入:

继续接受任意数量的输入,仅在输入显示“停止”或“结束”或类似内容时停止

对于您的情况,最好使用
arraylist
而不是
array
,因为您正在为
x
(未知)项数进行输入。以下程序从用户处获取输入,直到输入
-1

ArrayList<Integer> binList = new ArrayList<>();
System.out.println("Enter your codes:");
while (true) {
    x = input.nextInt();
    if (x == -1) break;
    binList.add(x);
}
请注意,
size()
方法返回arraylist的大小

样本输入:

样本输出:


问题是您使用的是数组。如果您使用动态大小的集合,如
ArrayList
Vector
,则调整数组大小不会有任何问题。如果您使用
列表
,则可以循环,直到碰到一个像-1这样的神奇数字,以便进行比较,首先检查它们是否大小相同,如果是,请选择loop通过逐个元素检查您的第二个问题听起来像是重复的,似乎非常适合使用
集合而不是数组-将值读入a
集合
,然后使用
contains()
方法轻松检查集合是否包含内容。问题是您使用的是arr
2 4