0

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

3 回答 3

0

通过空格分隔字符串非常简单。您已经知道如何将 Scanner 包裹在 System.In 周围——如果您将 Scanner 包裹在 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.

您可以结合此逻辑来分解您的输入并单独对每个单词进行拉丁化处理。

于 2013-07-12T17:21:35.383 回答
0

您可以使用

String[] words = str.split("\\s+");

.split("\\s+")每次出现一个或多个空白字符时拆分str

我建议您将处理单个单词的代码重构为自己的方法,并将其应用于words.

于 2013-07-12T17:19:42.673 回答
0

可能想尝试JavaCC,尽管它的实际用途可能更多用于复杂的解析情况。对于您想要的,执行 String.split 方法可能更容易。

于 2013-07-12T17:24:48.697 回答