两个列表的值相等,但I';我被告知他们不是';T import java.util.Scanner; 公共类完全相同{ 专用静态扫描仪输入; 公共静态void main(字符串[]args){ 输入=新扫描仪(System.in); System.out.print(“为列表1输入5个元素:”); int[]list1=newint[input.nextInt()]; for(int i=0;i
这就是我所拥有的。当提示输入列表1时:我输入1 2 3 4 5。然后,当提示输入列表2时,我输入1 2 3 4 5。我一直认为这两个列表并不完全相同,但是当列表中的所有值都相等并且两个列表的值都相同时,我得到的结果是这两个列表完全相同。问题是您正在输入列表的大小:两个列表的值相等,但I';我被告知他们不是';T import java.util.Scanner; 公共类完全相同{ 专用静态扫描仪输入; 公共静态void main(字符串[]args){ 输入=新扫描仪(System.in); System.out.print(“为列表1输入5个元素:”); int[]list1=newint[input.nextInt()]; for(int i=0;i,java,eclipse,Java,Eclipse,这就是我所拥有的。当提示输入列表1时:我输入1 2 3 4 5。然后,当提示输入列表2时,我输入1 2 3 4 5。我一直认为这两个列表并不完全相同,但是当列表中的所有值都相等并且两个列表的值都相同时,我得到的结果是这两个列表完全相同。问题是您正在输入列表的大小: import java.util.Scanner; public class StrictlyIdentical { private static Scanner input; public static void main(S
import java.util.Scanner;
public class StrictlyIdentical {
private static Scanner input;
public static void main(String[] args) {
input = new Scanner(System.in);
System.out.print("Enter 5 elements for list1:");
int[] list1 = new int[input.nextInt()];
for (int i = 0; i < list1.length; i++) {
list1[i] = input.nextInt();
}
System.out.print("Enter 5 elements for list2:");
int[] list2 = new int[input.nextInt()];
for (int i = 0; i < list2.length; i++) {
list2[i] = input.nextInt();
}
if (equals(list1, list2)) {
System.out.println("The two lists are strictly identical");
} else {
System.out.println("The two lists are not strictly identical");
}
}
public static boolean equals(int[] list1, int[] list2) {
if (list1.length != list2.length)
return false;
for (int i = 0; i < list2.length; i++) {
if (list1[i] != list2[i])
return false;
}
return true;
}
}
及
因此,如果不在值之前输入,则将有一个大小为1的列表和另一个大小为3的列表
您可以将列表更改为固定大小:
int[] list2 = new int[input.nextInt()];
或更改提示:
int[] list1 = new int[5];
您还可以动态地影响数组的大小,但必须更改代码的逻辑:
System.out.print("Enter the size of list1 followed by its elements:");
在这方面:
System.out.print("Enter elements for list1:");
int[] list1 = Arrays.stream(input.nextLine().split("\\s+")).mapToInt(Integer::parseInt).toArray();
System.out.print("Enter elements for list2:");
int[] list2 = Arrays.stream(input.nextLine().split("\\s+")).mapToInt(Integer::parseInt).toArray();
实际上,您创建了一个大小为1的列表(至少-这是您在输入中所写的),如下所示:
int[] list1 = new int[input.nextInt()];
输入2作为唯一的值
此外,您的扫描仪
与上面的保持在同一行——创建第二个大小为3的列表,然后输入4、5和1。
(阅读更多关于nextInt()
和扫描仪的信息
)
因此,您有两个选择:
- 获取有关列表大小的用户输入
- 用一个值初始化数组,如:
int[]arr=newint[5]代码>
list1[i] = input.nextInt();
System.out.print(“为列表1输入5个元素:”);
int[]list1=新的int[5] 我建议你用列表而不是数组来解决这个问题。打开
list1.equals(list2)
用于比较,而不是编写一种无路可走的防弹自制equals
方法;-)
因此,请像这样尝试:
System.out.print("Enter 5 elements for list1:");
int[] list1 = new int[5]; <<<<
for (int i = 0; i < list1.length; i++) {
list1[i] = input.nextInt();
}
System.out.print("Enter 5 elements for list2:");
int[] list2 = new int[5]; <<<<<<
for (int i = 0; i < list2.length; i++) {
list2[i] = input.nextInt();
}
import java.util.ArrayList;
导入java.util.List;
导入java.util.Scanner;
公共类完全相同{
专用静态扫描仪输入;
公共静态void main(字符串[]args){
输入=新扫描仪(System.in);
System.out.print(“为列表1输入5个元素:”);
List list1=新的ArrayList();
对于(int i=0;i<5;i++){
list1.add(input.nextInt());
}
System.out.print(“为列表2输入5个元素:”);
List list2=新的ArrayList();
对于(int i=0;i<5;i++){
list2.add(input.nextInt());
}
如果(列表1.equals(列表2)){
System.out.println(“两个列表完全相同”);
}否则{
System.out.println(“这两个列表并不完全相同”);
}
}
}
您的答案是?问题是什么?提示,仅供学习:添加一些println
以查看equals
方法中数组的大小和内容。。。最好是使用调试,多学习!编辑。谢谢
System.out.print("Enter 5 elements for list1:");
int[] list1 = new int[5]; <<<<
for (int i = 0; i < list1.length; i++) {
list1[i] = input.nextInt();
}
System.out.print("Enter 5 elements for list2:");
int[] list2 = new int[5]; <<<<<<
for (int i = 0; i < list2.length; i++) {
list2[i] = input.nextInt();
}
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class StrictlyIdentical {
private static Scanner input;
public static void main(String[] args) {
input = new Scanner(System.in);
System.out.print("Enter 5 elements for list1:");
List<Integer> list1 = new ArrayList<Integer>();
for (int i = 0; i < 5; i++) {
list1.add(input.nextInt());
}
System.out.print("Enter 5 elements for list2:");
List<Integer> list2 = new ArrayList<Integer>();
for (int i = 0; i < 5; i++) {
list2.add(input.nextInt());
}
if (list1.equals(list2)) {
System.out.println("The two lists are strictly identical");
} else {
System.out.println("The two lists are not strictly identical");
}
}
}