我正在尝试编写一个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/