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.
wie kann man eine die Folgende Stringkette am effizientesten auslesen:
"0;0;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0"
Wobei ich wissen will wie viele Nullen es vor den Einsen gibt, wie viel Einsen und wie viele Nullen nach den Einsen sind:
Wenn ich über Equals gehe und nach Nullen prüfe, kommen ja auch die Nullen nach den Einsen raus???:L
Die erste und letzte eins suchen (es gibt entsprechende Methoden hierzu in der String-Klasse), dann sollte man mit der Info wie lang der komplette String ist, alle Fragen beantworten können.
Ich muss doch zunächst das ganze in ein Array speichern, oder?
Java:
int vorNull = 0;
int eins = 0;
int nachNull = 0 ;
String kette = "0;0;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0";
String[] ketteArray = kette.split(";");
for (int i = 0; i < ketteArray.length; i++) {
if(ketteArray[i].equals("1")){
eins++;
}
}
Denn dann kommt man nicht mehr an die Position!???:L
also wenn du wirklich effiziet durchlaufen willst ohne alles einmal anzufassen, ist eRa's Lösung die Beste, dass du die "letzte" und "erste" eins raussucht und anhand der Länge des Arrays berechnest....
ansonsten wäre das hier auch noch ne Möglichkeit:
Java:
int vorNull = 0;
int eins = 0;
boolean vorher=false;
int nachNull = 0 ;
String kette = "0;0;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0";
String[] ketteArray = kette.split(";");
for (int i = 0; i < ketteArray.length; i++) {
if(vorher==false&&ketteArray[i].equals("0")){
vorNull++;
}else if(ketteArray[i].equals("1")){
eins++;
vorher=true;
}else if(ketteArray[i].equals("0")){
nachNull++;
}
}
System.out.println(vorNull+ " "+eins + " "+nachNull);
@Taramsis: wenn du bei deiner Lösung bleiben willst, könntest du es mit einem schalter lösen der angibt ob du dich vor oder hinter dem 1 befindest, und dann entsprechend bei deiner bedingung den else zweig ausprogrammieren
EDIT zu spät, so wie von pl4gu33 gedacht.
Etwas übersichtlicher:
Java:
int vorNull = 0;
int eins = 0;
int nachNull = 0;
boolean after = false;
String kette = "0;0;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0";
String[] ketteArray = kette.split(";");
for (int i = 0; i < ketteArray.length; i++) {
if (ketteArray[i].equals("1")) {
eins++;
after = true;
} else {
if (after) {
nachNull++;
} else {
vorNull++;
}
}
}