나는이 돼지 라틴어 번역기에서 일해 왔으며 나는이 두 개의 (동일한) while 루프가 예상대로 수행되지 않는다는 사실을 제외하고는 거의 완료되었습니다. "My name is"와 같이 번역 할 구를 넣으려고하면 "yMay amenay isway."라고 나와야합니다. 문제는 내가 알지 못하는 이유로 표시된 루프가 무한히 수행되고 있다는 것입니다. 그렇지 않으면이 코드가 제대로 작동하는지 테스트했습니다. 어떻게 작동시키는 지 모르겠습니다. 이견있는 사람? 고마워요!돼지 라틴어 번역기 무한 루프
import java.io.*;
import java.util.*;
import java.util.Arrays;
public class PigLatin
{
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+");
int period = words.length;
int spaces = (period - 1);
String[] word = Arrays.copyOfRange(words,0,spaces);
for (int i = 0; i < word.length; i++)
{
String a = word[i].substring(0,1);
int b = a.length();
int c = word[i].length();
while (b <= 4) //start of thought problem
{
if (!(a.contains("a") || a.contains("e") || a.contains("i") || a.contains("o") || a.contains("u")))
{
a = word[i].substring(0,b);
b = b + 1;
}
} // end of thought problem
if (word[i].startsWith("a") || word[i].startsWith("e") || word[i].startsWith("i") || word[i].startsWith("o") || word[i].startsWith("u"))
{
System.out.print(word[i] + "way");
}
else if (!(a.contains("a") || a.contains("e") || a.contains("i") || a.contains("o") || a.contains("u")))
{
String answer = word[i].substring(b,c);
System.out.print(answer + a + "ay");
}
System.out.print(" ");
}
String end = "";
for (String endArray: Arrays.copyOfRange(words,spaces,period))
{
end = end + endArray;
}
String z = end.substring(0,1);
int x = z.length();
int y = end.length();
while (x <= 4) //start of thought problem
{
if (!(z.contains("a") || z.contains("e") || z.contains("i") || z.contains("o") || z.contains("u")))
{
z = end.substring(0,x);
x = x + 1;
}
} //end of thought problem
if (end.startsWith("a") || end.startsWith("e") || end.startsWith("i") || end.startsWith("o") || end.startsWith("u"))
{
System.out.print(end + "way");
}
else if (!(z.contains("a") || z.contains("e") || z.contains("i") || z.contains("o") || z.contains("u")))
{
String answer = end.substring(x,y);
System.out.print(answer + z + "ay");
}
System.out.print(".");
}
}
무엇이 잘못 되었나요? 예상되는 것과 현재 출력은 무엇입니까? –
예상되는 출력은 Pig Latin으로 변환됩니다. 이 루프에서 원하는 것은 각 단어의 자음 또는 자음 그룹에 && z를 할당하는 것입니다. 현재 출력은 아무 것도 아니며 끝없이 실행됩니다. – Gihadi
LOL, @ AdamSiemion을 읽을 수 있다고 생각합니다;). 그는 당신에게 샘플 입력 (예 :'my name is adam')과 출력으로 기대하는 것을 제공 할 것을 요구합니다 (예 :'y-may ame-nay is-way'). – davidfmatheson