2016-10-11 9 views
0

2つの文字列を比較するコンパイル時にコンパイル時にエラーが発生しました:length1のプリミティブ型intにはフィールドjがありません トークン "、"、。予想ここ変数のプリミティブ型にはコンパイル時にフィールドxがありません

は私のプログラムは次のとおりです。

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

ところで、これが練習用でない限り、コードは完全には不要です。単純に 'if(str1.equals(str2))System.out.print("文字列が等しい "); else System.out.print( "文字列は等しくない"); '。 – Gendarme

+0

@Gendarmeはい。それは練習のためだけだった:)私は組み込み関数をほとんど使用したくありませんでした。 – Bijoy

答えて

4

あなたのforループの途中で条件のカンマ区切りリストを持つことができません。 trueまたはfalseと評価される式が必要です。

forループの最初の部分にカンマで区切られた初期化文のリストを自由に入れることができます。これはおそらく考えていたものです。

は、より多くのためにここで読む:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html

+1

彼はおそらく、 '、'の代わりに '&&'と書くことを意味します。それはおそらく適切な修正です。 – Gendarme

+0

コンパイル時に&&がコンパイル中にエラーが発生しました。Stringインデックスがjava.lang.String.charAt(不明なソース)の範囲外です。 – Bijoy

+0

@BijoyJosephコンパイル時にエラーは発生しません。 – Gendarme

1

長さ1と長さ2は、あなただけi変数を必要とするforループで同じ値を持っているので。次のように簡略化してください。

for (i = 0; i < length1; i++){ 
    if(str1.charAt(i) != str2.charAt(i)){ 
     flag = 1; 
     break; 
    } 
} 

編集:コードにもバグがあります。 str1.charAt(3)が呼び出されたとき(i == 3)、文字列の長さが3でループが1から3に変わるとします。 0から開始して2まで停止する必要があります(i <1)。

+0

あなたの方法を試しましたが、まだコンパイルエラーが発生しています – Bijoy

+0

私の回答を編集しました – vilpe89

関連する問題