텍스트를 가짜 라틴어로 번역하는 프로그램을 작성하십시오. 영어는 모든 단어의 첫 글자를 가져 와서 단어 끝에 옮기고 각 단어에 'ay'를 추가하여 가짜 라틴어로 번역됩니다. 예를 들어, 프로그램이 키보드에서 문자열 "The quick brown fox"를 읽으면 화면에 "Hetay uickqay rownbay oxfay"라는 텍스트가 인쇄되어야합니다. "Iay ikelay rogrammingpay"가 "I like programming"화면에 인쇄되어야한다는 것을 읽으면됩니다. 내가 "내가 rogrammingp을 ikel"하지만 수 없습니다 얻을로서 내가 출력을 얻고 그것을텍스트를 가짜 라틴어로 번역하는 프로그램을 작성하십시오.
import java.util.Scanner;
public class fakelatin2 {
public static void main(String[] args)
{
Scanner pig = new Scanner(System.in);
String word; // original word
String latin = ""; // pig latin translation, init to empty string
char first,last;
boolean cap = false;
String line;
System.out.print("enter line to translate: ");
line = pig.nextLine();
pig = new Scanner(line);
// loop through all the words in the line
while (pig.hasNext()) // is there another word?
{
word = pig.next();
first = word.charAt(0);
last=word.charAt(word.length()-1);
if ('A' <= first && first <= 'Z') // first is capital letter
{
first = Character.toLowerCase(first);
cap = true;
}
else
cap = false;
latin = word.replaceAll("ay", "");
if(cap)
{
latin = "" + Character.toUpperCase(word.charAt(1));
latin=latin+word.substring(word.length()-1);
}
System.out.print(latin + " ");
}
}
}
을 원하는
public class fakelatin {
public static void main(String[] args)
{
Scanner pig = new Scanner(System.in);
String word; original word
String latin = "";
char first;
boolean cap = false;
String line;
System.out.print("enter line to translate: "); //enter the line to translate
line = pig.nextLine();
pig = new Scanner(line);
// loop through all the words in the line
while (pig.hasNext()) // is there another word?
{
word = pig.next();
first = word.charAt(0);
if ('A' <= first && first <= 'Z') // first is capital letter
{
first = Character.toLowerCase(first);
cap = true;
}
else
cap = false;
// test if first letter is a vowel
if (first=='a' || first=='e' || first=='i' || first=='o' || first=='u')
latin = word + "ay";
else
{
if (cap)
{
latin = "" + Character.toUpperCase(word.charAt(1)); // char to String conversion
latin = latin + word.substring(2) + first + "ay";
}
else
latin = word.substring(1) + first + "ay";
}
System.out.print(latin + " ");
}
}
}
내가 돛 ikelay rogrammingpay로 출력을 가지고 다시
"내가 프로그래밍 좋아"
'word.replaceAll ("ay", "")는 위험한 것처럼 보입니다. 만약 단어가 유희라면 (laypay)? 그것은 엉망이 될 것이고, 당신은'regex '(https://docs.oracle.com/javase/8/docs/api/java)를 사용하여'word.replaceAll ("ay $", "")'를 사용할 수있다. (예 : /util/regex/Pattern.html#sum)) 또는 'word.substring (0, word.length() - 2)' – phflack
"Iikel Iikelrogrammingp"와 같은 결과를 출력합니다 – arfa
"ay"의 모든 인스턴스를 제거하지만 latin = latin.substring (latin.length() - 1) + latin.substring (0, latin.length() - 1); ' – phflack