영어를 스웨덴 요리사의 가짜 언어로 번역하려고합니다. 우선 순위의 언어 규칙은 다음과 같습니다.사용자 입력을 무시 무시한 대화로 바꾸기
- "AN"의 모든 항목을 "UN"으로 바꿉니다.
- "AU"의 모든 항목을 "OO"로 바꿉니다.
- 단어 끝에없는 "A"가 모두 "E"로 바뀝니다.
- "OW"의 모든 항목을 "OO"로 바꿉니다.
- 모든 "O"를 "U"로 바꿉니다.
- 단어 시작 부분 이외의 "I"의 첫 번째 발생을 "EE"로 바꿉니다.
- 단어 끝의 모든 "EN"을 "EE"로 바꿉니다.
- 단어 끝의 모든 "E"를 "E-A"로 바꿉니다.
- 단어의 시작 부분에있는 "E"가 모두 "I"로 바뀝니다.
- 모든 "U"를 "OO"로 바꿉니다.
저자는 번역되어야하지만 내 코드는 UUTHOR로 번역됩니다. 이것은 제 코드가 다섯 번째 규칙 ("OO"가있는 경우)을 따르기 때문입니다.
그렇다면 다섯 번째 매개 변수가 "OO"가 아닌 단일 "O"를 볼 때만 적용하려면 어떻게해야합니까?
String entry;
String entry6;
String entry7;
String entry8;
String entry9;
String entry11;
String entry10;
String end;
System.out.println("WELCOME TO THE SWEDISH CHEF TRANSLATOR!");
Scanner scan = new Scanner(System.in);
System.out.print("Please enter a phrase in english: ");
entry = scan.next();
String entry1 = entry;
int length = entry1.length();
String entry4;
System.out.println("1: " + entry1);
// AN TO UN
String entry2 = entry.replace("AN", "UN");
System.out.println("2: " + entry2);
// AU TO OO
String entry3 = entry2.replace("AU", "OO");
System.out.println("3: " + entry3);
// A TO E
String lastL = entry3.substring(length - 1, length);
int index2 = lastL.indexOf("A");
if (index2 < 0) {
entry4 = entry3.replace("A", "E");
} else {
String beg = entry3.substring(0, length - 1);
String replacedA = beg.replace("A", "E");
System.out.print(replacedA);
entry4 = lastL;
}
System.out.println("4: " + entry4);
// OW TO OO
String entry5 = entry4.replace("OW", "OO");
System.out.println("5: " + entry5);
// O TO U
entry6 = entry5.replace("O", "U");
System.out.println("6: " + entry6);
// I TO EE
String firstL = entry6.substring(0, 1);
int index3 = firstL.indexOf("I");
if (index3 < 0) {
entry7 = entry6.replaceFirst("I", "EE");
} else {
String endWord = entry6.substring(1, length);
String replacedI = endWord.replaceFirst("I", "EE");
entry7 = firstL + replacedI;
}
System.out.println("7: " + entry7);
// EN TO EE
length = entry7.length();
String En = entry7.substring(length - 2, length);
String substring2 = En.replace("EN", "EE");
entry8 = entry7.substring(0, length - 2) + substring2;
System.out.println("8: " + entry8);
// E to E-A
String lastL2 = entry8.substring(length - 1, length);
int index4 = lastL2.indexOf("E");
if (index4 < 0) {
entry9 = entry8;
} else {
String replacedE = lastL2.replace("E", "E-A");
entry9 = entry8.substring(0, length - 1) + replacedE;
}
System.out.println("9: " + entry9);
// E TO I
String firstL2 = entry9.substring(0, 1);
length = entry9.length();
int index5 = firstL2.indexOf("E");
if (index5 < 0) {
entry10 = entry9;
} else {
end = entry9.substring(1, length);
entry10 = "I" + end;
}
System.out.println("10:" + entry10);
// U to OO
entry11 = entry10.replace("U", "OO");
System.out.println("11:" + entry11);
그리고 코드에 어떤 문제가 있습니까? –
그럴 필요가없는 이유는 무엇입니까? Bork bork bork! http://www.tuco.de/home/jschef.htm – DNA
해시 맵 데이터 구조를 사용할 수 있습니까? (아마도 아닐 것이다) –