[英]Comparing two arrays in java with 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();
}
}
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]))))或类似的方法。
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;
}
}
最后,您可以使用标志“ isEqual”显示结果
if(isEqual) System.out.println("Equal");
else System.out.println("Not Equal");
您的问题是此代码
while (i < arrayLen && firstArray[i] == secondArray[i]); {
末尾有分号; // 去掉它
如前所述
if (i == arrayLen) {
应该
if (i == arrayLen - 1) {
注意
您使用过的警告
@SuppressWarnings("unused")
可能在告诉您一些有用的信息。
试试这个代码。
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");
}
我将其更改为使用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方法,但是我选择将此保留在我的答案中,作为将来读者的可能选择。
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]);
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.