2014-11-29 3 views
0

나는 대문자 부분을 제외하고는 다음과 같은 프로그램을 가지고있다 : 영어 단어 englishWord를 돼지 라틴어 단어 pigLatinWord : 으로 번역하는 방법은 다음과 같다. a. englishWord에 모음이 없으면 pigLatinWord는 영어 단어 + "ay"입니다. ('a', 'e', ​​'i', 'o'및 'u'와 대문자로 된 10 개의 모음이 있습니다.) b. 그렇지 않으면, englishWord가 모음으로 시작한다면, pigLatinWord는 단지 영어 단어 + "예"입니다. c. 그렇지 않으면 (englishWord에 모음이 있지만 아직 모음으로 시작하지 않은 경우) pigLatinWord는 end + start + "ay"입니다. 여기서 end와 start는 다음과 같이 정의됩니다. 1. englishWord를 모두 시작합니다. (그러나 포함하지 않음). 2. 첫 번째 모음의 englishWord가 모두 끝나도록하십시오. 3. 그러나 englishWord가 대문자로 표기되는 경우, 대문자와 소문자를 시작하십시오.돼지 라틴 프로그램 도움말 ... 대문자 사용?

어떻게 대문자를 입력합니까? 지금까지, 나는 Hasta = astaHay를 얻는다.

String word = word.substring(0, 1).toUpperCase() + word.substring(1); 

을 그러니 그냥 : 당신이 그들을 활용 다음 문자열로 문자열을 깨고하여 문자를 대문자로 할 수

public static boolean isVowel(char c) { 
if (c == 'a' && c == 'A') { 
    return true; 
} else if (c == 'e' && c == 'E') { 
    return true; 
} else if (c == 'i' || c == 'I') { 
    return true; 
} else if (c == 'o' || c == 'O') { 
    return true; 
} else if (c == 'u' || c == 'U') { 
    return true; 
} else { 
    return false; 
} 
} 

public static String convertPigLatinWord(String englishWord) { 
int length = englishWord.length(); 
if (englishWord.charAt(length - 1) == '.' && englishWord.charAt(length - 1) == '!' && englishWord.charAt(length - 1) == '?') { 

    char ch = englishWord.charAt(0); 
    String rest = englishWord.substring(1, length - 1); 
    return (rest + ch + "ay" + englishWord.charAt(length - 1) + "\"" + " "); 

} else if (isVowel(englishWord.charAt(0))) { 
    return (englishWord + "yay" + " "); 
} else { 
    char ch = englishWord.charAt(0); 
    String rest = englishWord.substring(1); 
    return (rest + ch + "ay" + " "); 
} 

} 
public String translate() { 
String pigLatinPhrase = ""; 
while (englishPhrase.length() > 1) { 
    String word = getWord(); 
    pigLatinPhrase += convertPigLatinWord(word) + " "; 
} 
return pigLatinPhrase; 
} 


public static void main(String[] args) { 

String answer = ""; 
do { 
    Scanner keyboard = new Scanner(System.in); 
    String input; 
    System.out.print("Please enter an English phrase: "); 
    input = keyboard.nextLine(); 
    PigLatin3 first = new PigLatin3(input); 
    System.out.println(first.translate()); 
    System.out.println("Would you like to translate another phrase? (y or n)"); 
    answer = keyboard.nextLine(); 

} while (!(answer.equals("N")) && !(answer.equals("n"))); 
System.exit(0); 
} 

} 
+0

다음은 고려하지 수있는 몇 가지 단어는 "내"와 "에 의해." 귀하의 지시에 따라, 이들은 "myay"와 "byay"로 번역 될 것입니다. –

+0

@ JoelA.Christophel 나는 나의 ybay를 위해 ybay를 얻는다. – pikachu7

+0

'(c == 'a'&& c == 'A')'는'(c == 'a'|| c == 'A')'이어야하며'E'와 동일해야합니다. –

답변

1

: 그것은 여기

지금까지 기본적인 프로그램입니다 하 스타 = Astahay해야한다 문자열의 toUpperCase() 및 toLowerCase() 메서드를 사용하십시오 ...

ASCII 테이블을 기반으로 한 단일 문자로 사용할 수있는 멋진 트릭이 있습니다. 다른 케이스를 얻으려면 xor로 32를 입력하십시오. 당신이 찾고있는 무엇

이 같은 것입니다 :

public static String onlyFirstLetterUpperCase(String a){ 
    int i; 
    for (i = 0; i < a.length(); i++){ 
     if("AEIOUaeiou".indexOf(a.charAt(i)) != -1) 
      break; 
     // indexOf looks for a char in a given string and returns its 
     // position or -1 if not found. So if this indexOf returns -1 I can be sure, 
     // that the character is not a vowel 
    } 
    return a.substring(0, i + 1).toUpperCase() + a.substring(i + 1).toLowerCase(); 
} 

은 당신의 작업을 수행 한 후이 메소드를 호출

+0

그러나 나는 첫 번째 모음의 시작 부분에서부터 시작합니다. 제안한 방법은 단어 "Hasta" – pikachu7

+0

에 대해서만 작동하므로 첫 번째 모음의 위치를 ​​찾으십시오 (루프를 사용하여 첫 번째 모음에 도달하면 루프에서 빠져 나올 수 있습니다). 메소드에서 1을이 새 위치로 바꾸십시오. 내 대답을 업데이 트합니다 ... – Void

+0

나는 나쁜 인덱스를했는데, 이제는 예상대로 작동해야합니다. – Void