2017-01-29 4 views
1

Ich versuche, eine Methode zu erstellen, die zwei Zeichenfolgen verbraucht. Es wird String 1 mit String 2 vergleichen und alle nicht gefundenen Zeichen durch '_' ersetzen. Zum Beispiel wenn String 1 = "Hallo"; String 2 = "eo" dann ist die Methode String zurück 1 als "_e__o" Hier ist mein Code:Java Unerwarteter Typ Fehler

static String getRevealedChars (String s1, String s2) 
{ 
    for (int i = 0; i < s1.length(); i++) 
    { 
     for (int c = 0; c < s2.length(); c++) 
     { 
      if (s1.charAt(i) == s2.charAt(c)) 
      { 
       break; 
      } 
      else 
      { 
       // this is where I get my Error 
       s1.charAt(i) = '_'; 
      } 
     } 
    } 
} 

Allerdings, wenn ich diesen Code ausführen ich einen "unerwarteten Typ" Fehler erhalten bei s1.charAt (i) = '_' ;. Ich bin wirklich neu in Java, danke im Voraus.

+1

's1.charAt (i) = '_';' ist ungültig. – iNan

+0

Schlüsselpunkt - 'String' Objekte sind unveränderlich. Sie können also Ihre 'String' _in situ_ nicht ändern - Sie müssen eine brandneue' String' machen, um zurückzukehren. Sie können es am einfachsten finden, ein 'char []' zu erstellen und am Ende in 'String' zu konvertieren. –

+0

Wie konvertiere ich ein Char-Array in einen String? – gurnii

Antwort

0

Ersetzen Datentyp s1 und s2 fromString zu StringBuilder, dann setCharAt() anstelle von charAt() wie folgt:

StringBuilder s1 = new StringBuilder("hello"); 
StringBuilder s2 = new StringBuilder("eo"); 

static String getRevealedChars (StringBuilder s1, StringBuilder s2) 
{ 
    for (int i = 0; i < s1.length(); i++) 
    { 
     for (int c = 0; c < s2.length(); c++) 
     { 
      if (s1.charAt(i) == s2.charAt(c)) 
      { 
       break; 
      } 
      else 
      { 
       // this is where I corrected Error 
       s1.setCharAt(i, '_'); 
      } 
     } 
    } 
} 

Hoffnung, das hilft. Viel Glück.