比较java中的两个数组和for循环

时间:2014-11-11 04:56:43

标签: java arrays loops for-loop compare

我对这个程序有困难。我必须通过从控制台读取数组来比较两个数组,并在用户输入后,打印一个声明是否为真。我不确定我是否可以使用比较功能,但我必须使用for循环。

以下是我的尝试:

import java.util.Scanner;

@SuppressWarnings("unused")
public class TwoArrays {
    @SuppressWarnings("unused")
    public static void main(String[] args) {

        Scanner input1 = new Scanner(System.in);
        System.out.println("enter the first array");
        String firstArrayAsString = input1.nextLine();

        System.out.println("enter the second array");
        String secondArrayAsString = input1.nextLine(); 

        if (firstArrayAsString. length() != secondArrayAsString.length()){
            System.out.println("false.arrays are not equal");       
        } else {
            int arrayLen = firstArrayAsString.length();
            char[] firstArray = firstArrayAsString.toCharArray();
            char[] secondArray = secondArrayAsString.toCharArray();

            int i = 0;
            while (i < arrayLen && firstArray[i] == secondArray[i]); {
                i++;
            }

            if (i == arrayLen) {
                System.out.println("true.they are equal");
            } else {
                System.out.println("False.they are not equal");
            }
        }
        input1.close();
    }
}

6 个答案:

答案 0 :(得分:0)

boolean isEqual = true;

for(int i=0;i<arrayLen;i++){
    if(firstArray[i] != secondArray[i]){
        System.out.println("False.they are not equal");
        isEqual = false;
        break;
    }
}
if(isEqual){
    System.out.println("true.they are equal");
}

如果不起作用,请尝试将(firstArray [i]!= secondArray [i])更改为(!(firstArray [i] .equals(secondArray [i])))或类似的。

答案 1 :(得分:0)

 int i = 0;
 while (i < arrayLen && firstArray[i] == secondArray[i]); {
 i++;
 }

将此更改为:

boolean isEqual = true;
for(int i=0;i<arrayLen;i++){
  if(firstArray[i]!=secondArray[i]) {
  isEqual = false;
  break;
  } 
}

最后,您可以使用flag&#39; isEqual&#39;

显示结果
if(isEqual) System.out.println("Equal");
else System.out.println("Not Equal");

答案 2 :(得分:0)

您的问题是此代码

while (i < arrayLen && firstArray[i] == secondArray[i]); {

最后有一个分号; //删除它

正如前面提到的那样

if (i == arrayLen) {

应该是

 if (i == arrayLen - 1) {

注意

您使用

表示的警告
@SuppressWarnings("unused") 

可能会告诉你一些有用的东西。

答案 3 :(得分:0)

试试这段代码。

char[] firstArray = {'a', 'b', 'c'};
char[] secondArray = {'a', 'b', 'c'};

if (firstArray.length != secondArray.length) {
    System.out.println("False.they are not equal");
} else {
    boolean isEqual = true;
    for (int i = 0; i < firstArray.length; i++) {
        if (firstArray[i] != secondArray[i]) {
            System.out.println("False.they are not equal");
            isEqual = false;
            break;
        }
    }
    if (isEqual)
        System.out.println("true.they are equal");
}

答案 4 :(得分:0)

我会将其更改为使用charAt(int)函数,而不是将值更改为数组。由于您将它们作为字符串读取,只需将它们作为字符串进行比较,如下所示:

if(firstArrayAsString.length() != secondArrayAsString.length()){
   return false;
} else{
   for(int i = 0; i < firstArrayAsString.length(); i++){
      if(firstArrayAsString.charAt(i) != secondArrayAsString.charAt(i){
         return false;
      }
   }
   return true;
}

首先检查阵列是否大小相同。如果他们不是,我们可以说他们不平等。如果它们的大小相同,则循环并确保每个索引处的字符匹配。如果在任何时候我们发现不匹配的字符,我们知道它不相等。如果我们遍历整个事物而没有找到差异,那么两个数组是相等的。

我想补充一点,如果不需要使用for循环,为什么不使用:

firstArrayAsString.equals(secondArrayAsString);

比较两个字符串值?

次要编辑

重读你的问题我看到你说你不能使用equals方法,但我选择将其留在我的答案中作为未来读者的替代选择。

答案 5 :(得分:0)

BufferedReader existFile = new BufferedReader(
            new FileReader("D:/1.txt"));
    BufferedReader recievedFile = new BufferedReader(
            new FileReader("D:/2.txt"));
    String str, str1 = null;
    List<String> list = new ArrayList<String>();
    List<String> list1 = new ArrayList<String>();

    while ((str = existFile.readLine()) != null) {
        list.add(str);

    }
    while ((str1 = recievedFile.readLine()) != null) {
        list1.add(str1);
    }

    String[] stringArr = list.toArray(new String[list.size()]);
    String[] stringArr1 = list1.toArray(new String[list1.size()]);

    for (int i = 0; i < stringArr1.length; i++) {
        for (int j = 0; j < stringArr.length; j++) {
            if (stringArr1[i].equalsIgnoreCase(stringArr[j])) {
                System.out.println(stringArr1[i]);
            }
        }
    }