如何分隔字符串:Pig Latin Translator

时间:2013-07-12 17:18:20

标签: java arrays

我是初学程序员,我必须写一个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");
        }
      }
    } 
  }

3 个答案:

答案 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方法可能更容易。