一种程序,用于识别由给定三个单词的任意组合构成的单词

时间:2012-05-19 04:52:52

标签: java

我正在尝试编写一个java程序,它接受一个字符串输入并检查它是否有效。决定的规则是:

1)当且仅当它包含单词“pi”,“ka”,“chu”作为其片段时,该字符串是可识别的,以任何顺序重复任何次数。 2)如果它包含任何其他片段(或子序列),那么它是无法识别的

对于前“皮卡丘”只有“pi”,“ka”,“chu”的一致,所以它是可识别的。 “kachupi”仅由“ka”,“chu”,“pi”组成,因此它是可识别的。 “pipi”也可识别“因为它包含”pi“两次。 “pich”无法识别,因为“ch”不是指定的子序列之一。

我在下面发布我的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");
        }


    }

}

1 个答案:

答案 0 :(得分:2)

您需要进行两项更改:

首先,改变

if(str.startsWith("chu"))

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

否则像“pipi”这样的字符串将无法通过测试。

第二,

while(str !=null)

永远不会失败,因为str永远不会是null。你需要测试空虚:

while (str.length() > 0)