2016-03-24 4 views
-2

Ich habe die Beiträge durchgesehen, konnte aber nicht die genaue Antwort finden. Dies ist der Code, den ich habe. es gibt nur einen Wert zurück, wenn ich am CharAt (0) setze und dann wird h gleich h sein. Ich möchte, dass es automatisch und ohne Arrays läuft.Finden Sie das erste char Vorkommen in einer Zeichenfolge, ohne Array zu verwenden oder einen Brief manuell auszuwählen

String s = "hellohe"; 
int d = s.length(); 

for (int i =0; i<d;i++)//{ 
    char result=s.charAt(0); 

if (result==s.charAt(i)) { 
    System.out.println(result); 
} 
+0

Ihre Frage ist ein wenig unklar. Ich kann sehen, wie es zu "h" kommen kann, weil das * das * erste Zeichen ist, das eine wiederholte Instanz hat. "L" könnte jedoch auch gültig sein, da es das erste "char" ist, das tatsächlich wiederholt wird. – Ceelos

+0

Hallo, Summet habe gerade meine Frage beantwortet. Danke trotzdem! –

+0

Haben Sie geklärt, was Sie meinten, ich hätte Ihnen die Antwort gegeben, sobald Sie es gepostet haben. Wie auch immer, Prost! – Ceelos

Antwort

0

Ich schlage vor, ein viel sauberes Lösung mit einer Methode:

:

public static char getFirstReocurringCharacter(String s) { 
    for (int i = 0; i < s.length(); i++) { 
     for (int j = i + 1; j < s.length(); j++) { 
      if (s.charAt(i) == s.charAt(j)) { 
       return s.charAt(i); 
      } 
     } 
    } 
    return ' '; 
} 

Dass Sie mit aufrufen 210

public static void main(String[] args) { 
    String s = "heasellohe"; 
    char result = getFirstReocurringCharacter(s); 
    System.out.println(result); 
} 

Probelauf:

Lauf:
h
BUILD SUCCESSFUL (Gesamtzeit: 0 Sekunden)

Jetzt können Sie anrufen und die Methode mehrfach auf verschiedenen Strings

laufen
+0

perfekt !!!! funktioniert gut –

+0

Hallo Ceelos, ich habe noch eine Frage% kannst du mir bitte sagen, wie Loops oben arbeiten? ich versuche zu vergleichen .... ile 0 -> h, h ---> e, e -> l, l == l? –

+0

@miami_oleg die äußere Schleife wird durch jeden Buchstaben iterieren. Die innere Schleife durchläuft jeden Buchstaben nach dem Buchstaben, auf dem die äußere Schleife liegt. Der erste Vergleich ist also zwischen "h" und "e". Die innere Schleife kehrt zurück, wenn sowohl die äußere Schleife als auch die innere Schleife mit dem Buchstaben übereinstimmen, auf dem sie sich befinden. – Ceelos

1

EDIT: Dies würde die ersten reocurring Zeichen drucken Referenzen mit zurück (source) und nach vorne schauen, so im folgenden Fall druckt es 'h':

String myString = "hellohe"; 
Pattern p = Pattern.compile("(([a-zA-Z]).*?(?=\\2))"); 
Matcher m = p.matcher(myString); 
m.find(); 
System.out.println(m.group(2)); 
+0

danke, aber warum wird es nicht H zurückgeben, da es der erste Reocurring-Brief ist? –

+0

Nur verstanden, was du meintest und redest meine Antwort –

Verwandte Themen