2017-12-13 14 views
0

나의 과제는 : 사용자가 입력 한 단어에 모음이 없으면 "ay"가 끝에 추가되고, 모음으로 시작하면 끝에 "yay"가 추가되고, 그렇지 않은 경우에는 "yy"가 끝에 추가됩니다. 이러한 조건 중 첫 번째 문자가 단어의 끝으로 이동하고 "ay"가 끝에 추가됩니다. 나는 마지막으로 일할 수있는 조건을 얻지 못하고있다. 예를 들어 "sad"라는 단어는 "adsay"를 출력해야하지만 대신 "saday"를 출력합니다. 즉, 다른 if 문을 읽고 받아 들인다는 의미입니다. 몇 가지 해결책을 찾아 보려고했지만 모든 것은 루프이며이 특정 할당을위한 루프는 피하고 싶습니다.루프를 사용하지 않고 문자열의 문자를 검색하려면 어떻게해야합니까?

import java.util.Scanner; 
class Main { 
public static void main(String[] args) { 
    Scanner in = new Scanner(System.in); 
    System.out.print("Word: "); 
    String word = in.nextLine(); 
    int length = word.length(); 
    String word1 = ""; 

    if (word.charAt(0) == 'a' || word.charAt(0) == 'e' || word.charAt(0) == 'i' || word.charAt(0) == 'o' || word.charAt(0) == 'u') 
    { 
    word1 = pigLatin(word); 
    System.out.println("Pig Latin: " + word1); 
    } 
    else if (word.indexOf("a") == -1 || word.indexOf("e") == -1 || word.indexOf("i") == -1 || word.indexOf("o") == -1 || word.indexOf("u") == -1) 
    { 
    word1 = pigLatin1(word); 
    System.out.println("Pig Latin: " + word1); 
    } 
    else 
    { 
    word1 = pigLatin2(word); 
    System.out.println("Pig Latin: " + word1); 
    } 
} 
static String pigLatin(String word) 
{ 
    String x = word + "yay"; 
    return x; 
} 
static String pigLatin1(String word) 
{ 
    String x = word + "ay"; 
    return x; 
} 
static String pigLatin2(String word) 
{ 
    char firstLetter = word.charAt(0); 
    String x = word.substring(1, word.length()) + firstLetter + "ay"; 
    return x; 
} 
} 
+0

시작 :'경우 (hasNoVowel (워드)) {...} 경우 다른 (startsWithVowel (워드)) {...} else {...}'. –

답변

1

문제는 두 번째 if 문에있다 :

else if (word.indexOf("a") == -1 || word.indexOf("e") == -1 || word.indexOf("i") == -1 || word.indexOf("o") == -1 || word.indexOf("u") == -1) 
{ 
    word1 = pigLatin1(word); 
    System.out.println("Pig Latin: " + word1); 
} 

것은 여기합니다 (|| 연산자)를 사용하여 "나"이기 때문에 프로그램 것이다, 여기 내 코드는 단어에 "a"가 포함되어 있지 않은 한이 블록을 입력하십시오. 또는에는 "e"가 포함되어 있지 않습니다. 테스트 입력의 경우 "sad"에는 "a"가 포함되지만 "e" ... 그래서 바람을 피우고 pigLatin1("sad") .

이 값을 변경하면 if은 "and"를 대신 사용합니다 (&& 연산자). 그런 식으로, 적어도 하나의 정의 된 모음을 가지지 않고, 정의 된 모든 모음을 가지지 않아도됩니다. 코드가 할당과 같아야 부분을 쉽게 이해할 수로 작업을 분할하여

else if (word.indexOf("a") == -1 && word.indexOf("e") == -1 && word.indexOf("i") == -1 && word.indexOf("o") == -1 && word.indexOf("u") == -1) 
+0

오, 그건 의미가있다, 나는 그것을 보지 못했다고는 믿을 수 없다. 감사! –