两个列表的值相等,但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

两个列表的值相等,但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

这就是我所拥有的。当提示输入列表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(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]

设置数组5,然后解决该问题

Equals方法也在工作

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