我编写了一个java程序来比较两个字符串,在编译时我得到错误:length1的基本类型int没有字段j 令牌上的语法错误"," ,.预期
这是我的计划:
import java.util.*;
public class StringCompare {
public static void main(String args[]){
String str1, str2;
int i,j, flag=0;
Scanner sc = new Scanner(System.in);
System.out.println("Enter the first string \n");
str1=sc.nextLine();
System.out.println("Enter the next string \n");
str2=sc.nextLine();
int length1=str1.length();
int length2=str2.length();
if(length1!=length2){
System.out.println("The strings are not equal");
}
else
{
for(i=1,j=1;i<=length1, j<=length2;i++,j++){
if(str1.charAt(i)!=str2.charAt(j)){
flag=1;
break;
}
}
if(flag==0)
System.out.println("The strings are equal \n");
else
System.out.println("The strings are not equal \n");
}
}
}
答案 0 :(得分:4)
在for
循环中间,您不能拥有以逗号分隔的条件列表。您的表达式必须仅为true
或false
。
您可以在for
循环的第一部分中自由地使用逗号分隔的初始化语句列表,这可能就是您的想法。
请阅读此处了解更多信息:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html
答案 1 :(得分:1)
因为length1和length2在for循环中具有相同的值,所以只需要i
变量。简化它就像:
for (i = 0; i < length1; i++){
if(str1.charAt(i) != str2.charAt(i)){
flag = 1;
break;
}
}
编辑:你的代码中也有一个错误。让我们说你的字符串长度是3,你的循环从1到3,当str1.charAt(3)被调用(i == 3)时它会崩溃。你需要从0开始并停止到2(i&lt; length1)。
答案 2 :(得分:0)
for (i = 0; i < length1; i++)
的范围错误的字符串索引的原因是编译器正在尝试访问字符串中不存在的点。它应该是for(i=1;i<=length1-1;i++)