我对这个程序有困难。我必须通过从控制台读取数组来比较两个数组,并在用户输入后,打印一个声明是否为真。我不确定我是否可以使用比较功能,但我必须使用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();
}
}
答案 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]);
}
}
}