2016-11-16 3 views
-4

Meine Ausgabe erhält zuerst die Großbuchstaben und ordnet diese Großbuchstaben in alphabetischer Reihenfolge als Kleinbuchstaben und ordnet diese in alphabetischer Reihenfolge. Ich möchte zuerst die Großbuchstaben in Kleinbuchstaben umwandeln und sie dann in alphabetischer Reihenfolge nach der gewünschten Ausgabe anordnen und Änderungen sollen nur in der collectLetters() Methode vorgenommen werden. Kann mir bitte jemand dabei helfen? Danke im Voraus.Alle Buchstaben aus einer Zeichenkette in Kleinbuchstaben umwandeln und dann alle in alphabetischer Reihenfolge anordnen

public class QuizIID 
{ 

public static String collectLetters(String text) 
{ 
    char[] charArray = text.toCharArray(); 
    Arrays.sort(charArray); 
    String sortedString = new String(charArray); 
return sortedString; 
} 

// runTest Methode

private static boolean runTest(int testNum, String p0, boolean hasAnswer, String p1) 
{ 
    System.out.print("Test #" + testNum + ": [" + "\"" + p0 + "\""); 
    System.out.println("]"); 
    String answer; 
    answer = collectLetters(p0); 
    boolean res; 
    res = true; 

    if (hasAnswer) { 
     System.out.println("Desired answer:"); 
     System.out.println("\t" + "\"" + p1 + "\""); 
    } 
    System.out.println("Your answer:"); 
    System.out.println("\t" + "\"" + answer + "\""); 
    if (hasAnswer) { 
     res = answer.equals(p1); 
    } 
    if (!res) { 
     System.out.println("DOESN'T MATCH!!!!"); 
    } else if (hasAnswer) { 
     System.out.println("Correct!"); 
    } 
    System.out.println(); 
    return res; 
} 

// Haupt Methode

public static void main(String[] args) { 
    int count = 0; 

    String p0; 
    String p1; 

    // ----- test 1 ----- 
    p0 = "She sells sea shells"; 
    p1 = "aeeeehhllllssssss"; 
    if(runTest(1, p0, true, p1)) count++; 
    // ------------------ 

    // ----- test 2 ----- 
    p0 = "ReMemBEr To IgnoRE CASe"; 
    p1 = "abceeeeegimmnoorrrst"; 
    if(runTest(2, p0, true, p1)) count++; 
    // ------------------ 

    // ----- test 3 ----- 
    p0 = "12345"; 
    p1 = ""; 
    if(runTest(3, p0, true, p1)) count++; 
    // ------------------ 

    // ----- test 4 ----- 
    p0 = "Programming III is fun"; 
    p1 = "afggiiiiimmnnoprrsu"; 
    if(runTest(4, p0, true, p1)) count++; 
    // ------------------ 

    // ----- test 5 ----- 
    p0 = "Knights are better than Bishops"; 
    p1 = "aabbeeeghhhiiknnoprrssstttt"; 
    if(runTest(5, p0, true, p1)) count++; 
    // ------------------ 

    System.out.print(count + " out of 5"); 
    if (count == 5) 
    { 
     System.out.println("!"); 
    } 
    else 
    { 
    System.out.println("."); 
    } 
} 
} 

// gewünschte Ausgabe

----jGRASP exec: java QuizIID -Xlint:unchecked 
Test #1: ["She sells sea shells"] 
Desired answer: 
    "aeeeehhllllssssss" 
Your answer: 
    "aeeeehhllllssssss" 
Correct! 

Test #2: ["ReMemBEr To IgnoRE CASe"] 
Desired answer: 
    "abceeeeegimmnoorrrst" 
Your answer: 
    "abceeeeegimmnoorrrst" 
Correct! 

Test #3: ["12345"] 
Desired answer: 
    "" 
Your answer: 
    "" 
Correct! 

Test #4: ["Programming III is fun"] 
Desired answer: 
    "afggiiiiimmnnoprrsu" 
Your answer: 
    "afggiiiiimmnnoprrsu" 
Correct! 

Test #5: ["Knights are better than Bishops"] 
Desired answer: 
    "aabbeeeghhhiiknnoprrssstttt" 
Your answer: 
    "aabbeeeghhhiiknnoprrssstttt" 
Correct! 

5 out of 5! 

----jGRASP: operation complete. 

// Meine Ausgabe

----jGRASP exec: java QuizIID 
Test #1: ["She sells sea shells"] 
Desired answer: 
"aeeeehhllllssssss" 
Your answer: 
" Saeeeehhllllsssss" 
DOESN'T MATCH!!!! 

Test #2: ["ReMemBEr To IgnoRE CASe"] 
Desired answer: 
"abceeeeegimmnoorrrst" 
Your answer: 
"ABCEEIMRRSTeeegmnoor" 
DOESN'T MATCH!!!! 

Test #3: ["12345"] 
Desired answer: 
"" 
Your answer: 
"12345" 
DOESN'T MATCH!!!! 

    Test #4: ["Programming III is fun"] 
    Desired answer: 
    "afggiiiiimmnnoprrsu" 
    Your answer: 
    " IIIPafggiimmnnorrsu" 
    DOESN'T MATCH!!!! 

    Test #5: ["Knights are better than Bishops"] 
    Desired answer: 
    "aabbeeeghhhiiknnoprrssstttt" 
    Your answer: 
    " BKaabeeeghhhiinnoprrssstttt" 
    DOESN'T MATCH!!!! 

    0 out of 5. 

    ----jGRASP: operation complete. 
+0

Es ist schwer zu wissen, wo ich anfangen soll, mit diesem. Was ist die Frage? Was ist das Problem? Was hast du probiert? Wo denkst du, dass du falsch liegst? Wie versuchen Sie, den Fall zu ändern? Nichts in Ihrer 'collectLetters' Methode tut etwas mit case. –

+0

Dies würde definitiv mehr Beschreibung und Ausarbeitung von den Autoren Ende verwenden. Meinst du damit, einen String nach seinen Zeichen zu sortieren und einen neuen String auszugeben? – anthonymonori

+0

Sie können die Frage nicht einfach in eine komplett andere Frage ändern, indem Sie vorhandene Antworten ungültig machen. Wenn Sie eine neue Frage haben, wird von Ihnen erwartet, dass Sie einen neuen Beitrag verwenden. Ich habe die Frage auf das Original zurückgesetzt. –

Antwort

-2

Ersetzen Sie die Zeile

char[] charArray = text.toCharArray(); 

von

char[] charArray = text.toLowerCase().replaceAll("[^\\p{Lower}]","").toCharArray(); 

Dies ist ein regular expression verwendet.

Runnable Beispiel:

https://ideone.com/WSvUZy

+0

Funktioniert gut. Danke eine Tonne – Priyanshu

+0

Dies sortiert nichts. @Priyanshu Unmöglich zu sehen, wie dies Ihre Frage beantwortet. – EJP

+0

@EJP: Es tut, wenn Sie die Zeile in den ursprünglichen Code einfügen, wie vorgeschlagen. –

Verwandte Themen