0

文字列を入力として受け取り、それが有効かどうかをチェックするJavaプログラムを作成しようとしています。決定のルールは次のとおりです。

1)文字列は、そのフラグメントとして「pi」、「ka」、「chu」という単語が任意の順序で任意の回数繰り返されている場合にのみ認識できます。2)他のフラグメント(またはサブシーケンス)が含まれている場合、認識できません

たとえば、「ピカチュウ」は「pi」、「ka」、「chu」のみで構成されているため、認識できます。「kachupi」は「ka」、「chu」、「pi」のみで構成されているため、認識できます。「pipi」は2回含まれているため「pipi」も認識可能ですが、指定されたサブシーケンスの1つではない「ch」があるため「pich」は認識できません。

以下にJavaコードを投稿しています。しかし、それは正しく機能していません。それをチェックして助けてください。前もって感謝します!

import java.util.Scanner;

public class RecognisingWords {


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

        Scanner inp= new Scanner(System.in);
        String str;
        int len;
        System.out.println("Enter the string to be tested:");
        str=inp.nextLine();
        System.out.println(str);

        while(str !=null)
        {

        if(str.startsWith("pi"))
        {
            len=str.length();
            str= str.substring(2,len);          
        }

        else if(str.startsWith("ka"))
        {
            len=str.length();
            str= str.substring(2,len);          
        }

        if(str.startsWith("chu"))
        {
            len=str.length();
            str= str.substring(3,len);          
        }

        else
        {
            System.out.println("Unrecognisable Sequence");
            break;
        }

        }

        if(str == null)
        {
            System.out.println("Recognisable Sequence");
        }


    }

}
4

1 に答える 1

2

次の 2 つの変更を行う必要があります。

まず、変更

if(str.startsWith("chu"))

else if (str.startsWith("chu"))

そうしないと、「pipi」のような文字列はテストに失敗します。

2番、

while(str !=null)

になることはないので、決して失敗することstrはありませんnull。空であることをテストする必要があります。

while (str.length() > 0)
于 2012-05-19T05:00:01.123 に答える