2016-12-13 2 views
-3

次のコードでは、インデックスが-1で-1に等しくないことをチェックします。なぜ彼らはそれをチェックしていますか? -1とはどのような線量ですか?なぜインデックスを-1と比較するのですか?

import java.util.*; 


class TestClass { 
    public static void main(String args[]) throws Exception { 

     Scanner s = new Scanner(System.in); 
     int t = s.nextInt(); 
     for(int i=0;i<t;i++) 
     { 
      String str = s.next(); 

      int index = 0; 
      int index1=0 , index2=0, count1=0, count2=0; 

      while(index != -1) 
      { 
       index1 = str.indexOf("SUVOJIT"); 
       index2 = str.indexOf("SUVO"); 

       if(index1==index2) 
       { 
        if(index1==-1) 
        { 
         break; 
        } 
        count1++; 
        str = str.substring(index1 + 1); 
       } 
       else 
       { 
        count2++; 
        str = str.substring(index2 + 1); 
       } 
      } 
      System.out.println("SUVO = "+count2+", SUVOJIT = "+count1);    
     }  
    } 
} 
+5

'indexOf'のドキュメントを読むことを試みてください –

+1

コードがバグのようです:' index'は決してループ内で更新されません。彼らはむしろ 'while(index2!= -1)'を望んでいると思う。 –

+1

@PavneetSinghサー..ありがとう! – Yash

答えて

2

それは非常に簡単である:

-1値であるString.indexOf()戻る対応する文字/文字シーケンスを担持その文字列内のインデックスがありません。

引用のJavadoc:

戻り値: 指定のサブストリングの最初の発生の指標、または-1こうした出現がない場合。

だから、ここ本当の答えは:あなたのコード内で使用されているライブラリー法のための既存の利用可能なドキュメントを読むことから始めて!

そして、コメントが指摘しているように、そのコードは最初はバグです。ループ制御変数(index)が0に初期化されるため、その後変更されることはありません。無限ループにつながります。

関連する問題