2013-07-19 97 views
0

我正在製作一個豬拉丁語翻譯,我真的不知道從哪裏去。我有基本的代碼,但我需要修改它以便翻譯整個句子。如果有人能告訴我如何使用我的字符串[]字我真的很感激它。非常感謝!豬拉丁語翻譯(句子)

import java.io.*; 
import java.util.*; 
import java.util.Arrays; 

public class Main 
{ 
    public static void main (String[] args) 
    { 
    System.out.print("Please enter a phrase to translate: "); 
    Scanner scan = new Scanner(System.in); 
    String str = scan.nextLine(); 
    String[] words = str.split("\\s+"); 
    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()); 
     String d = str.substring(0,4); 
     if (!(d.contains("a") || d.contains("e") || d.contains("i") || d.contains("o") || d.contains("u"))) 
      { 
      System.out.print(answer4 + d + "ay"); 
      } 
     else 
     { 
      String c = str.substring(0,3); 
      if (!(c.contains("a") || c.contains("e") || c.contains("i") || c.contains("o") || c.contains("u"))) 
      { 
      System.out.print(answer3 + c + "ay"); 
      } 
      else 
      { 
       String b = str.substring(0,2); 
       if (!(b.contains("a") || b.contains("e") || b.contains("i") || b.contains("o") || b.contains("u"))) 
       { 
        System.out.print(answer + b + "ay"); 
        } 
       else 
       { 
        String a = str.substring(0,1); 
        if (!(a.contains("a") || a.contains("e") || a.contains("i") || a.contains("o") || a.contains("u"))) 
        { 
         System.out.print(answer2 + a + "ay"); 
         } 
       } 
      } 
     } 
    } 
} 
} 
+1

爲了澄清起見,您能否定義您的豬拉丁文設計​​? – hexafraction

+0

基本上,如果一個單詞的前四個字母中的任何一個都是輔音,就用「ay」將它們添加到後面。如果單詞以元音開頭,則在單詞的末尾添加「方式」。 – Gihadi

回答

0

這應該是陣列中的每個單詞翻譯,只需使用一個for循環你的整個周圍,如果塊

for(String word: words) { 
    //put your whole if block here 
    //word is the variable to translate (i.e. word.startsWith("a")) 
} 

或者初學者:

for(int i = 0; i < words.length(); i++) { 
    //put if statements here 
    //words[i] is the variable to translate (i.e. words[i].startsWith("a")) 
} 

你也需要改變所有str循環內的引用爲word[i],因爲那是您想要使用的變量。

+0

我使用了替代方法,但遇到了一個小問題。我正朝着正確的方向前進,但現在它只能翻譯四個字。這是否與我有String answer4 = words [i] .substring94,words [i] .length())這個事實有關?我怎樣才能讓它循環無限,直到空白? – Gihadi

+0

現在你有一個單詞列表,這個循環將一次一個地遍歷每一個這樣的單詞。不確定你在問什麼。隨意添加代碼到你的問題,我會看看@Gihadi – Stephan

+0

@Gihadi如果它正在翻譯4個單詞,那麼這應該是一個非常簡單的修復,讓我知道什麼是錯的 – Stephan

0

你可以有一個for循環,通過每個字去,和你的邏輯應用到每個字:

for(String str : words) { 

    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()); 
     String d = str.substring(0,4); 
     if (!(d.contains("a") || d.contains("e") || d.contains("i") || d.contains("o") || d.contains("u"))) 
     { 
      System.out.print(answer4 + d + "ay"); 
     } 
     else 
     { 
      String c = str.substring(0,3); 
      if (!(c.contains("a") || c.contains("e") || c.contains("i") || c.contains("o") || c.contains("u"))) 
      { 
       System.out.print(answer3 + c + "ay"); 
      } 
      else 
      { 
       String b = str.substring(0,2); 
       if (!(b.contains("a") || b.contains("e") || b.contains("i") || b.contains("o") || b.contains("u"))) 
       { 
        System.out.print(answer + b + "ay"); 
       } 
       else 
       { 
        String a = str.substring(0,1); 
        if (!(a.contains("a") || a.contains("e") || a.contains("i") || a.contains("o") || a.contains("u"))) 
        { 
         System.out.print(answer2 + a + "ay"); 
        } 
       } 
      } 
     } 
    } 
} 
0

您可以使用循環增強在你如果塊整個數組翻譯:

for(String word: words) { 
    /* 
    *if block goes here 
    *... 
    */ 
} 

雖然創建這樣的翻譯是相當不安全的(例如代碼注入),除非輸入是從可信源放英寸

如果您熟悉詞法分析器/解析器,則應使用生成器(如ANTLR)來創建更安全(更復雜更復雜)的語言翻譯器。

0
#include stdio.h> 
#include conio.h> 
#include stdlib.h> 
#include string.h> 

void main() 
{ 
     char * sUserInput ; 
     char * check  ; 
     char * firstletter; 

     char ch = NULL; 
     int  i   = 0 ; 
     int  j   = 0 ; 
     int  k   = 0 ; 
     int  spacecount = 0 ; 
     int  count  = 0 ; 
     int  count1  = 0 ; 
     int  var  = 0 ; 
     int  gold  = 1 ; 

     sUserInput = (char *) malloc(sizeof(char)); 
     check  = (char *) malloc(sizeof(char)); 
     firstletter = (char *) malloc(4*sizeof(char)); 

     printf("Enter the sentence \n"); 

     while(ch != '\n') 
     { 
      scanf("%c",&ch); 
      sUserInput[i]=ch; 
      sUserInput = (char *) realloc(sUserInput,((i+2))*sizeof(char)); 
      i++; 
      if(ch == ' ') 
      { 
       spacecount++; 
      } 
     } 

     while(sUserInput[j] != '\n') 
     { 
      count1++; 
      if(gold==1) 
      { 
        firstletter[var]=sUserInput[j]; 
        firstletter[var+1]='a'; 
        firstletter[var+2]='y'; 
        gold=0; 
        j++; 
      } 
      if(sUserInput[j] !=' ') 
      { 
        check[k] = sUserInput[j]; 
        check = (char *) realloc(check,((k+2))*sizeof(char)); 
        printf("%c",check[k]); 
        k++; 
      } 
      if(sUserInput[j] ==' ' || (count1 == (i-(spacecount+2)))) 
      { 
        for(count=0;count<3;count++) 
        { 
          printf("%c",firstletter[count]); 
        } 
        var=0; 
        gold=1; 
        printf(" "); 
      } 
      j++; 
     } 

     free(sUserInput); 
     free(check); 
     free(firstletter); 
     getch(); 
}