我是初学程序员,我必须写一个Pig Latin Translator。我有这个代码,将翻译和单个单词。我只需要知道如何通过空格将输入分成单独的字符串。一旦我理解了这一点(我相信我正在尝试理解数组,不确定?)我将能够根据需要编辑代码。非常感谢!
import java.io.*;
import java.util.*;
public class Main
{
public static void main (String[] args)
{
Scanner scan = new Scanner(System.in);
String str = scan.nextLine();
String a = str.substring(0,1);
String b = str.substring(0,2);
String c = str.substring(0,3);
String d = str.substring(0,4);
String answer = "";
if (str.startsWith("a") || str.startsWith("e") || str.startsWith("i") || str.startsWith("o") || str.startsWith("u"))
{
System.out.print(str + "way");
}
else
{
answer = str.substring(2,str.length());
String answer2 = str.substring(1,str.length());
String answer3 = str.substring(3,str.length());
String answer4 = str.substring(4,str.length());
if (!(d.contains("a") || d.contains("e") || d.contains("i") || d.contains("o") || d.contains("u")))
{
System.out.print(answer4 + d + "ay");
}
else if (!(c.contains("a") || c.contains("e") || c.contains("i") || c.contains("o") || c.contains("u")))
{
System.out.print(answer3 + c + "ay");
}
else if (!(b.contains("a") || b.contains("e") || b.contains("i") || b.contains("o") || b.contains("u")))
{
System.out.print(answer + b + "ay");
}
else if (!(a.contains("a") || a.contains("e") || a.contains("i") || a.contains("o") || a.contains("u")))
{
System.out.print(answer2 + a + "ay");
}
}
}
}
答案 0 :(得分:0)
您可以使用
String[] words = str.split("\\s+");
每次出现一个或多个空白字符时, .split("\\s+")
会分割str
。
我建议您重构代码,将单个单词处理为自己的方法,并将其应用于words
的每个元素。
答案 1 :(得分:0)
通过空格分隔字符串非常简单。您已经知道如何围绕System.In包装扫描器 - 如果您将扫描器包裹在String周围,则其默认的标记分隔符是一个空格。
String test = "Hello world, my name is bob.";
Scanner sc = new Scanner(test);
while (sc.hasNext())
System.out.println(sc.next());
此代码块的输出将为
Hello
world,
my
name
is
bob.
你可以结合这个逻辑来分解你的输入并分别对每个单词进行分类。
答案 2 :(得分:0)
可能想尝试JavaCC,虽然它的实际用途可能更适用于复杂的解析情况。对于你想要的,做String.split方法可能更容易。