Präfix Check

Bei Postings zu Aufgabe Nr. x = 1..4 lassen Sie Ihr Betreff bitte mit "x: " beginnen, gefolgt von einer möglichst präzisen Überschrift, danke!

Moderator: Algorithmen und Datenstrukturen

Forumsregeln
Bei Postings zu Aufgabe Nr. x = 1..4 lassen Sie Ihr Betreff bitte mit "x: " beginnen, gefolgt von einer möglichst präzisen Überschrift, danke!
pinkguy
Erstie
Erstie
Beiträge: 14
Registriert: 15. Mai 2017 18:48

Präfix Check

Beitrag von pinkguy » 23. Jun 2017 09:47

Hallo Zusammen,
ich dachte eigentlich, dass mein Code so irgendwie funktionieren solle. Jedoch wird die Methode "toCharArray", die eigentlich erlaub sein sollte nicht erkannt. Kann mir jemand sagen ob ich sie falsch verwende oder wo der Fehler liegen könnte?

Hier mein Code

Code: Alles auswählen

{
    
    if(a==null||b==null){
        return false;
    }
    else{
        char[] a1 = toCharArray(a);
        char[] b1 = toCharArray(b);
        for(int i=0;i<a1.length;i++){
        if(a1[i]!=b1[i]){
            return false;
        }
    }
    return true; 
    }
    
}

LukasPhysiker
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 111
Registriert: 6. Mai 2017 13:05

Re: Präfix Check

Beitrag von LukasPhysiker » 23. Jun 2017 11:37

toCharArray() ist eine Methode der Klasse String. D.h. du musst deine char-Arrays folgendermaßen erstellen:

Code: Alles auswählen

char[] a1 = a.toCharArray();
char[] b1 = b.toCharArray();

pinkguy
Erstie
Erstie
Beiträge: 14
Registriert: 15. Mai 2017 18:48

Re: Präfix Check

Beitrag von pinkguy » 23. Jun 2017 11:56

Vielen Dank schon mal dieser Fehler taucht nicht mehr auf ich war nur etwas verwirrt, weil in der Methoden Deklaration die Methode folgendermaßen beschrieben wurde.
(siehe Bild Anhang)

Nun sieht mein Code folgendermaßen aus.

Code: Alles auswählen

{
    if(a.isEmpty()||b.isEmpty()){
        return false;
    }
    if(a==null||b==null){
        throw new IllegalArgumentException();
    }
    else{
        char[] a1 = a.toCharArray();
        char[] b1 = b.toCharArray();
        for(int i=0;i<a1.length;i++){
        if(a1[i]!=b1[i]){
            return false;
        }
    }
    return true; 
    }
    
}

Habe die Methode isEmpty(), die unter dem Reiter Stringhelper steht, verwendet jedoch wird mir immer wieder diese Fehlermeldung gezeigt.

Code: Alles auswählen

Failurereport
Testheadder – staticTest_singleChar_praefixInside(string_operations.matching.tests_praefixChecker.PraefixChecker_Test)
Message – No methods of StringHelper were used!
Trace 
Failurereport
Testheadder – staticTest_praefixInside(string_operations.matching.tests_praefixChecker.PraefixChecker_Test)
Message – No methods of StringHelper were used!
Trace 

pinkguy
Erstie
Erstie
Beiträge: 14
Registriert: 15. Mai 2017 18:48

Re: Präfix Check

Beitrag von pinkguy » 23. Jun 2017 11:59

Da Anhang nicht funktioniert hat hier die Methoden Deklaration:

public static char[] toCharArray(String s)

LukasPhysiker
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 111
Registriert: 6. Mai 2017 13:05

Re: Präfix Check

Beitrag von LukasPhysiker » 23. Jun 2017 12:21

Ok, sorry, was ich gesagt habe, ist (mittlerweile für diese Aufgabe) falsch. Die Tests wurden geändert. Sie sind jetzt strenger und verlangen unbedingt, dass die Klasse StringHelper verwendet wird und sie sind mal wieder fehlerhaft. Hier ist mein neuer Code, der jetzt funktioniert:

Code: Alles auswählen

{
    if(a == null || b == null) throw new IllegalArgumentException();
    
    char[] cA = StringHelper.toCharArray(a);
    char[] cB = StringHelper.toCharArray(b);
    
    if(a.length() <= 0 || b.length() <= 0) return false;
    
    for(int i = 0; i < cA.length; i++)
    {
        //if(cA[i] != cB[i]) return false;
        if(StringHelper.charAt(a,i) != StringHelper.charAt(b,i)) return false;
    }
    
    return true;
}
Wie du siehst, musste ich die Abfrage cA[ i ] != cB[ i ] durch die charAt-Methoden ersetzen. Jetzt könntest du dich fragen, warum ich überhaupt noch die char-Arrays erstelle? Wenn ich das nicht mache, meckert der immer noch, dass keine StringHelper-Methoden eingesetzt wurden im Fall, dass eine der Strings die Länge 0 hat. In dem Fall würde man aber normalerweise direkt die Zeile

Code: Alles auswählen

if(a.length() <= 0 || b.length() <= 0) return false;
aufrufen, so dass man gar keine Methoden der StringHelper-Klasse braucht!

@ Dogruel, Erdi: Ich bitte doch, das zu korrigieren! Mich würde auch interessieren, wie der Code der Musterlösung aussieht, bei dem vom Author gesagt wurde: Das ist der einfachste Code, den man sich vorstellen kann, der keine sinnlosen Dinge tut, nur um die Tests zu bestehen...

Khaleesi
Neuling
Neuling
Beiträge: 7
Registriert: 15. Jun 2017 17:02

Re: Präfix Check

Beitrag von Khaleesi » 23. Jun 2017 12:25

Hi pinkguy,

hier ist der Kundensupport für Codemonkeys:D... Ich versuche nun dein Problem zu lösen :D .

LukasPhysiker hat zwar recht das toCharArray() auf einem String ausgeführt werden muss also(

Code: Alles auswählen

String a = "Hallo";
a.toCharArray();
allerdings sind meines Erachtens die String Methoden gesperrt bzw. funktionieren nicht. Du musst die String Implementation von Codemonkeys benutzen =). Also die Statische Methode der Klasse StringHelper.

Code: Alles auswählen

StringHelper.toCharArray(a);

pinkguy
Erstie
Erstie
Beiträge: 14
Registriert: 15. Mai 2017 18:48

Re: Präfix Check

Beitrag von pinkguy » 23. Jun 2017 13:19

Vielen Dank euch zwei:)

Antworten

Zurück zu „AuD: Programmieraufgaben“