2016-05-07 16 views
1

Ich habe ein Diagramm. Zuerst enthält es zwei Kanten und 1 3. Wenn ich an der Kante gehe, wird die Methode testdata.firstData(s, t) aufgerufen wo s = 1 und t = 2.Wie werden zwei verschiedene Funktionen für eine gleiche Bedingung aufgerufen?

Dann muss ich zweimal durch die Kante 1 3 gehen. Also erstmal die Methode testdata.secondData(s, t) und dann aufgerufen werden.

So habe ich versucht, diese

if ("1".equals(s) && "2".equals(t)) 
    testinput = td.firstdata(); 
if ("1".equals(s) && "3".equals(t)) 
    testinput = td.seconddata(); 

Aber das Problem ist, wie

zu tun, weiß ich nicht, wie die dritte Methode aufzurufen. Kann mir jemand eine Lösung geben, wie kann ich die zweite und dritte Methode für die Kante 1 3 aufrufen?

+0

Ich denke, Ihr Design könnte ein wenig aus. Was machen diese Methoden? Sie könnten wahrscheinlich eine generische Methode verwenden, um Kanten in einem Graphen zu behandeln. – sebenalern

+0

Diese Methoden geben einige Werte zurück und für jeden Wert wird jeder Pfad des Graphen ausgeführt. Und ich habe 3 Pfade in meinem Graphen. Ein Pfad beginnt mit der Kante "1 2" und die anderen beiden Pfade beginnen mit "1 3". Um diese 3 Pfade auszuführen, brauche ich 3 Werte, weshalb ich 3 Methoden aufrufen muss. – Nitu08

+0

Was Sie suchen, heißt ein [** block **] (https://docs.oracle.com/javase/tutorial/java/nutsandbolts/expressions.html): * Ein Block ist eine Gruppe von null oder mehr Anweisungen zwischen balancierten geschweiften Klammern und kann überall dort verwendet werden, wo eine einzelne Anweisung erlaubt ist. * – Andreas

Antwort

2

können Sie einen boolean Flags verwenden, ob oder nicht die seconddata() Methode zu überprüfen, bereits verwenden, return Anweisung aufgerufen worden, um die TestData1() Verfahren zu beenden, wenn nötig.

boolean secondFinished = false; 
public int TestData1(String a, String b){ 
TestdataGeneration td = new TestdataGeneration(); 

    if("1".equals(a) && "2".equals(b)) 
    { 
     testinput = td.firstdata(); 
    } 
    if("1".equals(a) && "3".equals(b) && !secondFinished) 
    { 
     testinput = td.seconddata(); 
     secondFinished = true; 
     return testinput; 
    } 
    if("1".equals(a) && "3".equals(b) && secondFinished) 
    { 
     testinput = td.thirddata(); 
    } 
    return testinput; 
} 

Oder in einer besser lesbaren Art und Weise

boolean secondFinished = false; 
public int TestData1(String a, String b){ 
TestdataGeneration td = new TestdataGeneration(); 

    if("1".equals(a) && "2".equals(b)) 
    { 
     testinput = td.firstdata(); 
    } 
    if("1".equals(a) && "3".equals(b)) 
    { 
     if (!secondFinished) 
     { 
      secondFinished = true; 
      return td.seconddata(); 
     } 
     else 
     { 
      testinput = td.thirddata(); 
     } 
    } 
    return testinput; 
} 
+0

'&' ist bitweise und. '&&' ist logisch und. Sie möchten das logische und durchgehende Snippet. – computerfreaker

+0

Ja stimmt, ich habe einfach kopiert und eingefügt, ohne zu überprüfen –

+1

@AngeloOparah Vielen Dank. Genau das wollte ich. – Nitu08

Verwandte Themen