java - 一个识别由给定三个单词的任意组合组成的单词的程序

标签 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");
        }


    }

}

最佳答案

您需要进行两项更改:

首先,改变

if(str.startsWith("chu"))

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

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

第二,

while(str !=null)

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

while (str.length() > 0)

关于java - 一个识别由给定三个单词的任意组合组成的单词的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10662402/

相关文章:

java - SOAP 信封与 Java 客户端调用 .NET SOAP Web 服务的区别

java - 如何在没有字符串或数组的情况下按升序对整数数字进行排序?

java - RPI 上的 JDK8 安装路径不起作用

java - 自然语言解析,实际例子

Java运算符: |=

java - 如何显示某个类的所有可用方法(java)

java - 如何使用当前日期作为函数输入获取月份名称

java - spring-mvc Hibernate 中 Autowiring 依赖项失败

java - 每 5 分钟间隔使用 grep 解析日志文件

java - 防止发生错误时强行关闭