Ich versuche grundsätzlich zu berichten, ob string1 und string2 genau die gleichen Tokens in der gleichen Reihenfolge enthalten. Ich kann nicht herausfinden, was mit meinem Code falsch ist. Ich habe die Endlosschleife korrigiert, aber jetzt prüft sie keine leere Zeichenkette.Wie liest man aus der Eingabe und meldet, ob zwei Strings exakt die gleichen 'Token' an genau denselben Positionen haben?
public static boolean sameTokens (String s1, String s2)
{
Scanner scan1 = new Scanner(s1);
Scanner scan2 = new Scanner(s2);
boolean contains = true;
String token1 = scan1.next();
String token2 = scan2.next();
while (token1.length() <= token2.length())
{
if (!(scan1.hasNext() || scan2.hasNext()))
{
contains = false;
}
if (token1.equals(token2))
{
contains = true;
}
}
return contains;
}
Dies sind meine Testfälle.
@Test
public void testSameTokens()
{
assertTrue(sameTokens("this is a test", " this is a test "));
assertTrue(sameTokens("", ""));
assertFalse(sameTokens("hello there", "hello there Joe"));
assertFalse(sameTokens("abc def", "def abc"));
assertFalse(sameTokens("a", "A"));
assertFalse(sameTokens("a b c", "abc"));
}
Und das ist das Ergebnis.
Vielen Dank im Voraus Jungs.
Wie können Sie die Endlosschleife korrigiert haben, wenn Sie tatsächlich keine der in der Schleifenbedingung innerhalb der Schleife verwendeten Werte ändern? – Andreas
Irgendwelche Anhaltspunkte, an was ich es ändern sollte? – SassyRegards201
Sie beginnen mit der Bearbeitung der Frage und zeigen den tatsächlichen Code, den Sie haben. Du weißt, der Code, wo du angeblich die Endlosschleife reparierst. Ich verstehe nicht einmal den Zweck der Schleife, * wie gerade gezeigt *, da du 'contains = false;' direkt vor der Schleife gesetzt hast, und der einzige Effekt der Schleife ist, es wieder zu tun, also warum gerade habe die Schleife? – Andreas