1

なぜこれが機能しないのかわかりませんか?文字列内の配列からキーワードを見つけて、コンソールに配列のインデックス番号を出力しようとしています。ブール値「true」の有無にかかわらず「if」ステートメントを試しました

public class Testing 
{
    public static void main(String[] args)
    {
    String[] keywords = new String[5];
    keywords[0] = "boat";
    keywords[1] = "car";
    String myString = "the banana car";

          for(int a = 0; a <= keywords.length; ++a)

          {

             if(myString.contains(keywords[a])== true)
                {

                System.out.println(myString.indexOf(keywords[a]));
                }
             else
                {
                System.out.println("Those keywords are not in that string"); 
                }

           }
     }
}
4

6 に答える 6

4
String[] keywords = new String[5];////////////here you have array with 5 element
    keywords[0] = "boat";
    keywords[1] = "car";
//////////you just full index 0 and index 1

次に、キーワードの長さの for ループ

for (int a = 0; a <keywords.length; a++) 
//////keywords.length=5 , index 0 and index 1 have a value but the other index is empty 

そう :

  • キーワード配列を埋める必要があります:

     keywords[0] = "boat";
     keywords[1] = "car";
     keywords[2] = //////////;
     keywords[3] = //////////;
     keywords[4] = ///////;
    
  • または長さ = 2 にします。

    String[] keywords = new String[2];
    
于 2013-03-31T18:52:49.853 に答える
1

String 配列に 5 つの要素が含まれていると宣言しているため、3 つの余分な要素がありません

String[] keywords = new String[5];
    keywords[0] = "boat";
    keywords[1] = "car";
于 2013-03-31T18:53:55.547 に答える
1

a <= keywords.lengthサイズ5で5 つの要素 (0 から 4)を持つa < keywords.lengthように宣言した場合は、配列を埋める必要があります。

Javaでは配列はゼロベースであるため、長さnの配列がある場合、インデックスは0からn-1になります (合計するとnになります) 。

もう一つの重要なこと:

ではif(myString.contains(keywords[a])== true)trueまたはfalseを返す== trueため、 は冗長であり、ここではこれのみを確認する必要があります。したがって、 を削除する方が良いスタイルです。myString.contains(keywords[a])== true

于 2013-03-31T18:54:01.610 に答える
1

のすべての要素を初期化していないkeywordsため、NullPointerException

初期化した最初の 2 つの要素のみを確認する場合は、for ループを次のように変更します。

for (int a = 0; a <= 1; ++a)
于 2013-03-31T18:54:30.757 に答える
1

このプログラム:

public class Testing {

   public static void main( String[] args ) {
      String[] keywords = new String[]{ "boat", "car" }; // Only 2 not 5
      String myString = "the banana car";
      for( String keyword : keywords ) {
         int index = myString.indexOf( keyword );
         if( index > -1 ) {
            System.out.println(
               "Keyword '" + keyword + "' is in the string '" +
               myString + "' at position " + index ); 
         }
         else
         {
            System.out.println( "Keyword '" + keyword +
               "' is not in the string '" + myString + "'" ); 
         }
      }
   }
}

出力:

Keyword 'boat' is not in the string 'the banana car'
Keyword 'car' is in the string 'the banana car' at position 11
于 2013-03-31T18:57:38.783 に答える
0
public static void main(String[] args) {
    String[] keywords = {"boat", "car"};
    String myString = "the banana car";
    for(int i = 0; i < keywords.length; i++) {
        System.out.println(myString.contains(keywords[i]) ? myString.indexOf(keywords[i]) : "Those keywords are not in that string");

    }
}

..動作するはずです

于 2013-03-31T18:55:09.980 に答える