在数组之间寻找相似的值

时间:2019-10-01 02:14:31

标签: java arrays

我想将一个简单的程序放到一起,该程序可以接收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]);

3 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

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;
    }
}

答案 1 :(得分:0)

以下是一个答案,显示了如何使用An error occurred while starting the kernel Traceback (most recent call last): File "C:\Users\k.g\AppData\Local\Continuum\anaconda3\lib\runpy.py", line 193, in _run_module_as_main "__main__", mod_spec) File "C:\Users\k.g\AppData\Local\Continuum\anaconda3\lib\runpy.py", line 85, in _run_code exec(code, run_globals) File "C:\Users\k.g\AppData\Local\Continuum\anaconda3\lib\site‑packages\spyder_kernels\console\__main__.py", line 11, in start.main() File "C:\Users\k.g\AppData\Local\Continuum\anaconda3\lib\site‑packages\spyder_kernels\console\start.py", line 287, in main import_spydercustomize() File "C:\Users\k.g\AppData\Local\Continuum\anaconda3\lib\site‑packages\spyder_kernels\console\start.py", line 39, in import_spydercustomize import spydercustomize File "C:\Users\k.g\AppData\Local\Continuum\anaconda3\lib\site‑packages\spyder_kernels\customize\spydercustomize.py", line 27, in from IPython.core.getipython import get_ipython File "C:\Users\k.g\AppData\Local\Continuum\anaconda3\lib\site‑packages\IPython\__init__.py", line 54, in from .core.application import Application File "C:\Users\k.g\AppData\Local\Continuum\anaconda3\lib\site‑packages\IPython\core\application.py", line 23, in from traitlets.config.application import Application, catch_config_error File "C:\Users\k.g\AppData\Local\Continuum\anaconda3\lib\site‑packages\traitlets\config\__init__.py", line 6, in from .application import * File "C:\Users\k.g\AppData\Local\Continuum\anaconda3\lib\site‑packages\traitlets\config\application.py", line 100, in class LevelFormatter(logging.Formatter): AttributeError: module 'logging' has no attribute 'Formatter' 查找相似的数组元素。它以两个> conda info active environment : base active env location : C:\Users\k.g\AppData\Local\Continuum\anaconda3 shell level : 1 user config file : C:\Users\k.g\.condarc populated config files : C:\Users\k.g\.condarc conda version : 4.7.12 conda-build version : 3.18.8 python version : 3.7.3.final.0 virtual packages : base environment : C:\Users\k.g\AppData\Local\Continuum\anaconda3 (writable) channel URLs : https://repo.anaconda.com/pkgs/main/win-64 https://repo.anaconda.com/pkgs/main/noarch https://repo.anaconda.com/pkgs/r/win-64 https://repo.anaconda.com/pkgs/r/noarch https://repo.anaconda.com/pkgs/msys2/win-64 https://repo.anaconda.com/pkgs/msys2/noarch package cache : C:\Users\k.g\AppData\Local\Continuum\anaconda3\pkgs C:\Users\k.g\.conda\pkgs C:\Users\k.g\AppData\Local\conda\conda\pkgs envs directories : C:\Users\k.g\AppData\Local\Continuum\anaconda3\envs C:\Users\k.g\.conda\envs C:\Users\k.g\AppData\Local\conda\conda\envs platform : win-64 user-agent : conda/4.7.12 requests/2.22.0 CPython/3.7.3 Windows/10 Windows/10.0.17134 administrator : False netrc file : None offline mode : False 数组开始,将值放入两个不同的Set集合中,然后遍历一组(无关紧要的是哪一个,我的例子是遍历int)寻找两组中都存在项目,最后跟踪名为Set的新第三组中的匹配项。

setOne

当我在本地运行时,这是输出:

itemsInBothSets

答案 2 :(得分:0)

参与其中的输入:

  

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

对于您的情况,最好使用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);
}

用于比较的部分:

我假设您已经创建了两个数组列表binListbinList2。我还假设您已经如上所述在两个arraylist中都输入了可变数量的项目。现在进行比较,使用以下代码:

for (int i = 0; i < binList.size(); i++) {
    for (int j = 0; j < binList2.size(); j++) {
        if(binList.get(i) == binList2.get(j)) {
            System.out.print(binList.get(i) + " ");
        }
    }
}

请注意,size()方法返回arraylist的大小。这是上述代码的示例输入和输出:

  

样本输入:

Enter your codes:

1 2 3 4 -1

Enter your codes:

2 4 5 7 9 -1
  

示例输出:

2 4
相关问题