2017-12-13 6 views
0

Meine Aufgabe ist: wenn das vom Benutzer eingegebene Wort keine Vokale hat, wird "ay" am Ende hinzugefügt, wenn es mit einem Vokal beginnt, fügt es "yay" zum Ende hinzu, andernfalls trifft es nicht Von diesen Bedingungen wird dann der erste Buchstabe an das Ende des Wortes bewegt und "ay" wird an das Ende angehängt. Ich kann nicht scheinen, dass die letzte Bedingung funktioniert. Zum Beispiel sollte das Wort "sad" "adsay" ausgeben, stattdessen gibt es "saday" aus, was bedeutet, dass es eine andere if-Anweisung liest und akzeptiert. Ich habe versucht, einige Lösungen nachzuschlagen, aber alles, was ich bekommen habe, sind Schleifen und ich möchte Schleifen für diese bestimmte Aufgabe vermeiden. Hier ist mein Code:Wie kann ich in Strings nach einem Zeichen suchen, ohne eine Schleife zu verwenden?

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

starten, indem Sie die Aufgabe in leicht Aufspalten Teile Der Code zu verstehen, wie die Zuordnung aussehen sollte: 'if (hasNoVowel (Wort)) {...} else if (startsWithVowel (Wort)) {...} sonst {...} '. –

Antwort

1

Das Problem liegt in Ihrer zweiten if Aussage:

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); 
} 

Weil Sie verwenden "oder" hier (die || Operator), wird Ihr Programm Geben Sie diesen Block ein, solange das Wort kein "a" enthält, oder enthält kein "e" usw. Für Ihre Testeingabe enthält "sad" "a", aber nicht "e" ... so dass Sie anrufen pigLatin1("sad") .

Ändern Sie if, um stattdessen "and" (den Operator &&) zu verwenden. Auf diese Weise muss das Wort nicht jeden definierten Vokal haben, anstatt mindestens einen definierten Vokal zu haben.

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

Ohhh das macht Sinn, kann nicht glauben, dass ich das nicht gesehen habe. Vielen Dank! –

Verwandte Themen