Zum Inhalt springen

Ausgabe aus einem String


Containy

Empfohlene Beiträge

Naja ein bisschen hats geholfen, aber eigentlich hat mir ein Klassenkamerad das geproggt, obwohls ja voll easy eigentlich ist, aber ich blick immer noch nicht so wirklich durch:

Aber trotzdem so siehts aus:

-----------------------------------------------------

public class stringy {

public stringy() {

}

public static void main(String args[]) {

String str = "Heinrich Thein";

int j=0;

char c='e';

for (int i=0; i<str.length(); i++ ){

if (str.charAt(i)==c){

j++;}

}

System.out.println ("Es sind "+j+" dumme " +c+" drinnen");

}

}

-------------------------------------------

Gruß Containy

Link zu diesem Kommentar
Auf anderen Seiten teilen

Stimmt

Schmeiss den obigen Quellcode weg und versuche mal IndexOf


String x = "Das ist ein Teststring";


if (x.indexOf ("v") > 0) {

  System.out.println("Enthalten");

} else {

  System.out.println("nicht Enthalten");

}


x = "Hier ist es vorhanden";


if (x.indexOf ("v") > 0) {

  System.out.println("Enthalten");

} else {

  System.out.println("nicht Enthalten");

}

Mit IndexOf findest Du die Position eines Characters in einem String. Ist der Character nicht vorhanden so wird -1 zurückgegeben (wenn ich mich recht entsinne), ist er vorhanden wird die Position zurückgegeben.

Hoffe damit kannste was anfangen

Gruß Erbeere

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von kingofbrain

Guten Morgen!!

Also entweder es ist noch zu früh und ich noch zu verschlafen, oder die beiden Posts über mir sind falsch.

Dir Aufgabendstellung war doch die Anzahl des Buchstabens, nicht die Position, oder?

Und dann war die Lösung mit der Schleife schon richtig.

k.o.b

Nö, Du hast recht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von LoCal

Stimmt... indexOf(String, offset) würde auch funktionieren, aber in der Unterrichtstunde hätte das nciht so gepasst. Aber das kannst Du ja nciht wissen :)

Das würde nicht nur funktionieren, sondern wäre auch deutlich effizienter.

Vielleicht kannste ja deinen Lehrer mit so etwas wie:


int offset=0;

String str = "fügt Deine Signatur am Ende Deines Beitrags ein";

char c = 'e';

while((offset=str.indexOf(c, offset)+1) != 0) {

  z++;

}

beeindrucken. :D

Gruß Jaraz

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

leider ist es überhaupt nicht effizienter das mit indexOf() zu machen. indexOf() läuft im Grunde auch nur über das im String-Objekt gekapselte Char-Array. Ihr teilt also den Durchlauf über den ganzen String nur in mehrere Teilstücke auf. Im Grunde hat diese Variante sogar mehr overhead als die erste, und sollte sogar leicht ineffizienter sein.

Viele Grüße,

Michael

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

Sun muss da die Abarbeitung von charAt abgeändert haben.

Unter 1.3.1_02 ist die indexOf Methode noch deutlich schneller.

Unter 1.4.0 ist auf einmal die charAt Methode ein bisschen schneller. Wie schon von dir angemerkt durch den größeren Overhead von indexOf.

Meine Kenntnisse bezogen sich auf 1.3 :D

Beim testen sind mir jetzt aber die Unterschiede aufgefallen.

Gruß Jaraz

----------------------------------------

Testprogramm:


import java.io.*;


public class Test { 


	public Test() { 

		String str = "fügt Deine Signatur am Ende Deines Beitrags ein";

		int j; 

		int offset;

		char c='e'; 

		long zeit = System.currentTimeMillis();

		for(int g=0; g<2; g++){

			offset=0;

			j=0;

			while((offset=str.indexOf(c, offset)+1) != 0) {

			  j++;

			}

		}

		System.out.println("Sekunden: "+((System.currentTimeMillis()-zeit)/1000));

		zeit = System.currentTimeMillis();

		for(int k=0; k<2; k++){

			j=0;

			for (int i=0; i<str.length(); i++ ){ 

				if (str.charAt(i)==c){ 

					j++;

				}

			}

		}

		System.out.println("Sekunden: "+((System.currentTimeMillis()-zeit)/1000));

	}


	public static void main(String args[]) { 

		Test test = new Test();

	}

} 


Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...