2017-12-13 3 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"が含まれていますが、 ...だからあなたは呼んで呼ぶpigLatin1("sad")

if」に「and」を使用するように変更してください(&&演算子)。そうすれば、少なくとも1つの定義された母音を持たずに、定義されたすべての母音を持つ必要はありません。コードが割り当てのようになります部品を理解することは簡単にタスクを分割することにより

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

ああ、それは意味をなさない、私はそれを見ていないと信じることはできません。ありがとう! –

関連する問題