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.
an eine Methode übergebe ich ein Array mit char Werten. Diese bestehen aus 'w', 'u' und 's'.
Andere Werte gibt es in dem Array nicht. Jetzt will ich auszählen, wie viele von einem bestimmten Wert im Array gespeichert ist.
Ich übergebe ein Attribut, dessen Attributwert gibt an welcher Wert gezählt werden soll.
Dazu habe ich folgenden Code geschrieben:
Java:
public int chaZaehlen(char aufPruefen, char[] zuPruefen){
int anzahl=0; // wird hochgezählt
int erg; // Anzahl muss resettet werde
// System.out.println(aufPruefen);
switch(aufPruefen){
case 'w':
for(int w= 0; w<zuPruefen.length;w++){
if(aufPruefen=='w'){
anzahl++;
}
else{
}
}
break; // case w
case 'u':
for(int w= 0; w<zuPruefen.length;w++){
if(aufPruefen=='u'){
anzahl++;
}
else{
}
}
break; // case u
case 's':
for(int w= 0; w<zuPruefen.length;w++){
if(aufPruefen=='u'){
anzahl++;
}
}
break;
default:
System.out.println("FEHLER IN charZaehlen!");
break;
}
erg = anzahl;
anzahl = 0;
return erg;
}
Ich erhalte immer die Zahl 350 zurück (das Array speichert 350 Werte).
Wo liegt in meinem Code der Fehler? ???:L
änderst du denn aufPruefen auch innerhalb der schleifen in der switch-anweisung?! weil sonst ist es nämlich genau length-Mal identisch und damit gültig und wird gezählt
Du rennst über die zuPruefen Variable in deiner For Schleife, aber deine If Abfrage testet auf "aufPruefen" und die hat bekanntlich den Wert des erwarteten Cases. Somit wird immer bis 350 gezählt, weil du eben nicht dein Array sondern deinen Char prüfst.
Du machst einen doppelten Test (der case prüft auf 'w' UND die IF-Abfrage prüft auf 'w'). Außerdem ist die Bedingung im if ja IMMER wahr, deswegen wird anzahl auch IMMER hichgezält
Ich denke, das folgende sollte gehen:
Java:
if(zuPruefen[i] =='w') anzahl++;
// das else kannst du dir sparen
also mal ganz davon ab,... ich glaub deine Methode kann man auch einfacher implementieren nämlich so :
Java:
public class Ausgabe {
public static void main(String args[]) {
// create Calendar instance with actual date
char[] charr={'w','x','w','y','x'};
System.out.println(Ausgabe.pruefe('y',charr));
}
public static int pruefe(char cha, char[] chararr){
int zaehler=0;
for(int i=0;i<chararr.length;i++){
if(cha==chararr[i]){
zaehler++;
}
}
return zaehler;
}
}
Ausgabe be y = 1 , bei w= 2 und bei x =2
natürlich kann man dann nicht mehr Filtern also es gibt keinen Default sondern es kann nach jedem Char gesucht werden