假设我们要编写一个程序,比较两个整数列表,看它们是否包含相同的数字。两个列表中的数字可以以任意顺序出现,并且数字可以重复。例如,列表
2 4 8 3 9 4
和
9 4 2 8 4 3
包含相同的数字。
这个实验练习将带你完成编写一个程序来解决这个问题的过程。
(注意,如果我们对两个列表都进行排序,这个问题会变得更容易解决。由于本实验练习的主要目的是获得一些使用数组和方法的练习,因此我们将不采用这种方法。
为方便起见,我们应该假设所讨论的数字存储在两个单独的文本文件中。
首先,我们需要一些代码来从文本文件中读取整数列表,并将它们放入数组中。下面的方法可以做到这一点。
public static int[] readNumbers(String fileName){扫描器输入= null;try {input = new Scanner(new File(fileName));} catch(Exception ex) {ex. printstacktrace ();system . exit (0);} int N = 0;//计算文件中有多少个数字。while(input.hasNextInt()) {int未使用= input.nextInt();N + +;} input.close ();int[] = new int[N];//创建一个合适大小的数组尝试{input = new Scanner(new File(fileName));} catch(Exception ex) {ex. printstacktrace ();system . exit (0);} for(int n = 0;n < A.length;n++) A[n] = input.nextInt();input.close ();返回一个;}
编写第二个方法
printNumbers(int A[])
它将存储在数组中的数字列表打印到System。输出,每行一个数字。这将允许你确认你读的数字是正确的。
使用这两个方法编写一个程序,从文本文件中读取一组数字,然后将它们打印到System.out。
这里有一个解决列表比较问题的策略。
为了实现这个策略,编写以下两个方法的代码:
公共静态布尔比较(int 1 [],int 2 [])
第一个方法计算x在数组a中出现的次数。第二个方法使用上面概述的策略比较两个数组的内容,如果两个数组包含相同的数字则返回true,如果不包含相同的数字则返回false。
编写一个程序,使用该策略比较两个int型文件的内容。您的程序应该打开这两个文件,比较它们的内容,并打印一条消息,说明这两个文件是否包含相同的数字。