Bellman-Ford: doFunctionality: Message – -1

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!
LukasPhysiker
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 111
Registriert: 6. Mai 2017 13:05

Bellman-Ford: doFunctionality: Message – -1

Beitrag von LukasPhysiker » 18. Jun 2017 17:12

Ich werde gerade überhaupt nicht schlau aus den Tests, da sie tatsächlich überhaupt keine Aussage machen! Hier ist mein Code:

Code: Alles auswählen

public void doFunctionality()
{
    Matrix<E> L = getL();
    Matrix<E> oldMatrix = getM(getI());
    AbstractEdgeComparator<E> comp = getGraph().getComparator();
    Matrix<E> newMatrix = new MatrixFactory<E>().newInstance(getKard_V(),getKard_V(),comp.getMax());
    
    int n = getKard_V();
    int u,v,w;
    E min;
    for(v=0; v<n;v++)
    {
        for(w=0;w<n;w++)
        {
            min = comp.getMax();
            for(u=0;u<n;u++)
            {
                if(comp.compare(min,comp.sum(oldMatrix.get(v,u),L.get(u,w))) > 0)
                {
                    min = comp.sum(oldMatrix.get(v,u),L.get(u,w));
                }
            }
            newMatrix.set(u,w,min);
        }
    }
    appendToM(newMatrix);
}
Das ist die Antwort des Servers:

Code: Alles auswählen

Antwort des Servers
Junitreport

    Time – 546

    Testcount – 5

    Failurecount – 5

    Ignorerecount – 0

Failurereport

    Testheadder – staticFunctionalityTestUndirectedGraphOne(graph.algorithm.bellmanford.BellmanFordFunctionalityTest)

    Message – -1

    Trace

Failurereport

    Testheadder – staticFunctionalityTestUndirectedGraphTwo(graph.algorithm.bellmanford.BellmanFordFunctionalityTest)

    Message – -1

    Trace

Failurereport

    Testheadder – dynamicFunctionalityTestDirected(graph.algorithm.bellmanford.BellmanFordFunctionalityTest)

    Message – -1

    Trace

Failurereport

    Testheadder – staticFunctionalityTestDirectedGraphOne(graph.algorithm.bellmanford.BellmanFordFunctionalityTest)

    Message – -1

    Trace

Failurereport

    Testheadder – dynamicFunctionalityTestUndirected(graph.algorithm.bellmanford.BellmanFordFunctionalityTest)

    Message – -1

    Trace 
In jedem Fall ist die Message -1. Was soll ich bitte daraus lernen? Wieder einmal kann ich mir nicht sicher sein, ob der Fehler in meinem Code oder in den Tests liegt. Kann mir jemand weiterhelfen? Wenn jemand einen Code hat, der funktioniert, wäre ich auch dankbar, wenn diese Person den Code einfach hier einfügen würde.

tna_wirth
Neuling
Neuling
Beiträge: 9
Registriert: 20. Okt 2013 23:51

Re: Bellman-Ford: doFunctionality: Message – -1

Beitrag von tna_wirth » 19. Jun 2017 12:59

Habe deinen Code gerade einmal in einer echten Entwicklungsumgebung laufen lassen. Kann nachvollziehen, dass die Antworten von Codemonkey manchmal frustrierend sind.

Bei deinem Fehler handelt es sich um eine java.lang.ArrayIndexOutOfBoundsException, die CodeMonkey bei der Fehlermeldung nicht weiterzuleiten scheint. Diese ist darin begruendet, dass du das JavaDoc von Matrix::get ignoriert hast, in dem steht:
Note that the row indizes go from 1 to this instance's Matrix::getRowAmount (borders included) and the column indizes go from 1 to this instance's Matrix::getColumnAmount(borders included)
Solltest du also deine Schleifen statt von 0 bis getKard_V()-1 von 1 bis getKard_V() laufen lassen, solltest du besser Chancen haben, dass es funktioniert.

Ich werde derweil pruefen, ob es eine sinnvolle Moeglichkeit gibt, CodeMonkey solche fehler besser anzeigen zu lassen.

Ich hoffe, dass ich helfen konnte.
AuD - Codemonkey - Graphen u. Baeume - Development

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

Re: Bellman-Ford: doFunctionality: Message – -1

Beitrag von LukasPhysiker » 19. Jun 2017 16:33

Danke, das werde ich gleich mal ausprobieren, sobald Codemonkeys wieder funktioniert.

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

Re: Bellman-Ford: doFunctionality: Message – -1

Beitrag von LukasPhysiker » 20. Jun 2017 17:19

Ok, ich hatte zusätzlich noch noch einen anderen Fehler: Ich habe die falschen Indizes in newMatrix.set(...) eingesetzt. Dieser Code funktioniert:

Code: Alles auswählen

{
    Matrix<E> L = getL();
    Matrix<E> oldMatrix = getM(getI());
    AbstractEdgeComparator<E> comp = getGraph().getComparator();
    Matrix<E> newMatrix = new MatrixFactory<E>().newInstance(getKard_V(),getKard_V(),comp.getMax());
    
    int n = getKard_V();
    int u,v,w;
    E min;
    for(v=1; v<=n;v++)
    {
        for(w=1;w<=n;w++)
        {
            min = comp.getMax();
            for(u=1;u<=n;u++)
            {
                if(comp.compare(min,comp.sum(oldMatrix.get(v,u),L.get(u,w))) > 0)
                {
                    min = comp.sum(oldMatrix.get(v,u),L.get(u,w));
                }
            }
            newMatrix.set(v,w,min);
        }
    }
    appendToM(newMatrix);
}

Antworten

Zurück zu „AuD: Programmieraufgaben“