![]() |
|
|
Themen-Optionen |
|
|
Nach oben #1 |
|
Gast
Beiträge: n/a
|
Hallo,
weis zufällig einer wie ich ein array nach einem bestimmten wert durchsuche ? z.B. möchte ich ganzes array nach der zahl 5 durchsuchen, und ich möchte wissen wieviel mal sie in der array vorhanden ist ^^[/highlight] |
|
|
|
Nach oben #2 |
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
|
hi.
z.b. so Code:
int[] testArray = { 1, 5, 8, 5, 9, 10, 5, 5, 1 };
int zaehler = 0;
int gesucht = 5;
for( int i = 0; i < testArray.length; i++ )
{
if( testArray[i] == gesucht )
{
zaehler++;
}
}
System.out.println( gesucht + " ist " + zaehler + " mal vorhanden." );
|
|
|
|
|
|
Nach oben #4 | |
|
Erfahrener Benutzer
Registriert seit: 02.02.2005
Beiträge: 515
|
Zitat:
|
|
|
|
|
|
|
Nach oben #7 |
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
|
hm. ja, so pauschal kann man das ja nicht erklären.
also ich könnte hier jetzt was schreiben, aber dann würden da direkt mal weitere 14fragen draufkommen. ich muss mal darüber nachdenken, wie ich das am besten formuliere. zunächst einmal würde ich dir raten, dass du eine methode in der klasse schreibst, die diese funktionalität (also die suche nach einem element in einem array) öfters verwendet. wenn das nur einmal aufgerufen wird brauchst du auch keine methode. (das stimmt so nicht ganz, aber lassen wir das mal so stehen *g*) Code:
private int countEqualValues( int zahl )
{
// obige schleife
return zaehler;
}
Code:
int anzahlFuenfen = countEqualValues( 5 ); |
|
|
|
|
|
Nach oben #8 |
|
Projektleiter
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.091
|
Code:
public class ArrayUtils {
public static int count(int data[], int needle) {
int count = 0;
for(int i = 0; i < data.length; i++) {
if(data[i] == needle) {
count++;
}
}
return count;
}
}
Code:
int count = ArrayUtils.count(new int[] {4, 5, 6,32, 5, 5, 5, 2, 4, 6}, 5);
System.out.println("5 ist "+count+" mal vorhanden");
|
|
|
|
|
|
Nach oben #10 |
|
Gast
Beiträge: n/a
|
Was verstehst du daran denn nicht?
Der einzige wirkliche Unterschied zwischen den beiden Ansätzen besteht darin, das TheDragonMaster eine Klassenmethode verwendet und anstatt das Array in der Methode zu deklarieren u. initialisieren übergibt er es der Methode: Code:
public static int count(int data[], int needle) {
Btw. hab zwar absolut keine Ahnung von PHP, aber liefert folgender Code wirklich die Häufigkeit des Elementes im Array zurück ? Code:
if(in_array("wert", $array)) echo "Ist drin";
|
|
|
|
Nach oben #11 |
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
|
hallo,
sag einfach, was du nicht verstehst. das ist jetzt kein handwerk .. du könntest das natürlich einfach übernehmen .. und dann würdest du immer wieder mit "static" arbeiten. das ist aber nicht sinn der sache. in DMs beitrag ist es so, dass er die methode als static deklariert, damit man auf sie ohne eine instanz der klasse zugreifen kann. du musst also nicht das hier machen: Code:
ArrayUtils utils = new ArrayUtils(); utils.methode(); Code:
ArrayUtils.methode(); das kennst du z.b. hier System.out.println() oder Math.sqrt(). wenn du etwas nicht verstanden hast .. dann frag einfach grüße ben. |
|
|
|
|
|
Nach oben #12 |
|
Gast
Beiträge: n/a
|
Ömm, von dir @ Ben habe ich eigentlich alles verstanden ^^ Is ne gutte anleitung da
Hab von TheDragon master nicht alles verstanden ^^ Weis net was: Code:
public class ArrayUtils {
public static int count(int data[], int needle) {
und return count; sagt mir auch nichts habe ja auch nicht alles daran nicht verstanden, nur public static und public class ArrayUtils + return . @ mic_checker Jap, genau, if(in_array("wert", $array)) echo "Ist drin"; überprüft nur ob der wert "wert" in der variable $array vorhanden ist. |
|
|
|
Nach oben #13 |
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
|
zum
Code:
return count; Code:
return zaehler; du gibst eben den wert zurück, der in der methode ermittelt wurde. das Code:
public static wenn DragonMaster das ohne static geschrieben hätte, dann müsstest du ein objekt anlegen Code:
ArrayUtils utils = new ArrayUtils(); das Code:
public class ArrayUtils "class" sagt eben nur aus, dass es sich dabei um eine klasse handelt und "public" ist ein modifier. wenn du das public weglässt, dann wird der default gewählt, dann gibt es noch private und protected. musst du mal irgendwo nachschlagen grüße ben. |
|
|
|
|
|
Nach oben #14 |
|
Projektleiter
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.091
|
Hast du dich überhaupt schonmal mit Java beschäftigt?
Wenn nicht solltest du vielleicht mal sowas wie javabuch.de oder "Java ist auch eine Insel" lesen. Das sind eigentlich die absoluten Grundlagen. Ich werde das auch nicht weiter erklären, weil dass bereits unzählige Male getan wurde. Davon abgesehen fürchte ich, dass meine Erklärung dazu führen würde, dass du nur noch mehr Fragen hast. ^^" |
|
|
|
|
|
Nach oben #19 |
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
|
Morgen,
dann kannst Du kein Array verwenden uns musst auf eine Collection zurückgreifen. Die sind etwas anders aufgebaut bzw. Du musst etwas anders mit Ihnen arbeiten. Lies Dir mal das hier durch: Es ist meiner Ansicht nach nicht ganz trivial von Arrays auf Collection-Typen umzusteigen. Aber versuche es erstmal selbst und frage dann nochmal nach, wenn Du nicht weiterkommst Da Du ja vorher PHP programmiert hast muss ich Dich enttäuschen. Etwas in der Art von Code:
$_array = array();
$n = 5;
for( $i = 0; i < $n; $i++ )
{
$_array[] = $i;
// bzw. alternativ mit array_push()
}
Grüße Ben. |
|
|
|