Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
String / charAt + Fehlermeldung: char cannot be dereferenced
a toString() ???
a ist doch schon string und wieso wird überprüft ob a in help enthalten ist?? help ist doch a
und woher kommt die variable str???
da hast du irgendwelche variablen vertauscht.
Also ich hab's gerade mal getestet - bei mir laeufts...
Ich versteh' auch nicht so ganz, was Du da machen willst. Der Code prueft jedenfalls nicht, ob da
ein STRING(!!!) in einem anderen String enthalten ist. Momentan zaehlt er die Lange von str, wenn
ich's recht verstehe.
Ausserdem:
Code:
String help = a.toString(); //Fehlermeldung: char cannot be dereferenced
if(help.contains(a))
Muesste dann so heissen - syntaktisch richtig - macht aber noch nicht das Richtige...
Code:
public int countStringAppearance(String string1){
int count=0;
for(int j=0; j<string2.length();j++){
Character n= new Character(string2.charAt(j));
String help = n.toString(); //Fehlermeldung: char cannot be dereferenced
if(help.contains(string1))
count++;
}
return count;
public int countStringAppearance(String string1){
int count=0;
for(int j=0; j<string2.length();j++){
Character n= new Character(string2.charAt(j));
String help = n.toString();
while (help.contains(string1)) //geht nicht
count++;
}
return count;
Nummer 2:
Code:
public int countStringAppearance(String string1){
int count=0;
for(int j=0; j<string2.length();j++){
Character n= new Character(string2.charAt(j));
String help = n.toString();
while (help.equals(string1)) //geht nicht, dann nochmals mit if
count++;
}
return count;
Doch all dies geht nicht.
Kann mans überhaupt so lösen?
public class Test
{
String string2 = "hiaasdflajsdhilaksjfaehilawkfdsjaehiafd";
public int countStringAppearance(String string1){
int count=0;
String tmpString = ""; // sowas nicht in der Schleife -> schlechte Performance ;o)
Character n = null;
for(int j=0; j < string2.length(); j++){
n = new Character(string2.charAt(j));
tmpString += n.toString();
if(tmpString.contains(string1)) {
count++;
tmpString = "";
}
}
return count;
}
public static void main (String[] args) {
Test tst = new Test();
int num = tst.countStringAppearance("hi");
System.out.println("number: "+num);
}
}
Ausgabe: number: 4
[edit: "Character n = " verschoben...]
Also hier etwas genauer, was der Code macht - hab' ja eh nicht so viel veraendert:
Code:
public int countStringAppearance(String string1){
...
for(int j=0; j < string2.length(); j++){ // gehe string2 Zeichen fuer Zeichen durch
n = new Character(string2.charAt(j)); //holt das aktuelle Zeichen
tmpString += n.toString();// bstelt einen temporaeren String aus den Elementen von string2
if(tmpString.contains(string1)) { // wenn der gesuchte String im sktuellen String enthalten ist,
// dann hochzaehlen
count++;
tmpString = ""; // String zuruecksetzen
}
}
return count;
}
Warum benutzt du nicht indexOf?
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html#indexOf(java.lang.String,%20int)
Einfach suchen,dann die Position ab der zu suchen ist anpassen und weiter suche, das solange bis die Methode -1 zurückgibt, also der String nicht mehr gefunden wird.