Angenommen ich nehme die Matrixzeile "011201011".
Diese werden in ein Array "char[] matrixarray" gespeichert, also matrixarray[0] = 0; matrixarray[1] = 1 usw.
Nun muss ich herausfinden, wieviele 1er - Blöcke in dem Array drin stecken. In meinem Beispiel sind es 3 Stück (vorne 11; mitte 1; hinten 11). Ich habe bereits versucht, die im Array gespeicherten Werte miteinander zu vergleichen, und wenn immer ein Arrayfeld mit dem darauffolgenden Subtrahiert 1 oder -1 ergibt, soll ein weiteres Array "matrixzeile" mit der Anzahl der Blöcke gefüllt werden.
Also matrixzahl[0] = 3 usw.
Ich habe bereits versucht, die im Array gespeicherten Werte miteinander zu vergleichen, und wenn immer ein Arrayfeld mit dem darauffolgenden Subtrahiert 1 oder -1 ergibt, soll ein weiteres Array "matrixzeile" mit der Anzahl der Blöcke gefüllt werden.
man könnte einfach durch das Array iterieren und jedes Mal wenn man auf eine 1 stösst überprüfen, ob der Vorgänger auch eine 1 ist. Wenn nicht befindet man sich in einem neuen "Block" und inkrementiert die Zählvariable.
man könnte einfach durch das Array iterieren und jedes Mal wenn man auf eine 1 stösst überprüfen, ob der Vorgänger auch eine 1 ist. Wenn nicht befindet man sich in einem neuen "Block" und inkrementiert die Zählvariable.
So habe ich's mit einer Schleife gemacht, und siehe da: es funktioniert =).
Danke für die schnellen Antworten.
/Edit:
Es gibt ein neues Problem:
Bei z.B. der Matrix "111010201" tritt beim Überprüfen der "Blöcke" eine ArrayIndexOutOfBoundsException auf.
Der Code der if-Schleife ist:
int c =0;String s ="111010201";Pattern p =Pattern.compile("1+");Matcher m = p.matcher(s);while(m.find()){System.out.println(m.group());
c++;}System.out.println(c);
Hilft mir gerade nicht sehr weiter, weil ich die Matrix nicht als zusammenhängenden String habe, sondern als Werte in einem Array.
Bei Matrix-Zeile 1 = 111010201 wäre also array[0][0] = 1; array[0][3] = 0; array[0][6] = 2 usw.
Entweder brauche ich einen anderen Weg, oder eine Möglichkeit, den String für jedes neue i bei array[n] zu einem ganzen String zusammenzusetzen.
man könnte die for - Schleife mit i=1 beginnen ;-)
Java:
char[] c ={1,1,1,0,1,0,2,0,1};int count =0;if(c[0]==1)
count++;for(int i =1; i < c.length; i++){if(c[i]==1&& c[i -1]!=1)
count++;}System.out.println(count);
Problem ist:
valid hat immer den Wert true, (Warnung von Eclipse: "unused" bei boolean valid).
Das Array boolean[] validrow hat aber false-Werte drin (per System.out.println() überprüft).
Kann jemand den Fehler sehen?
Java:
boolean valid =true;for(int i =0; i<field.nbCols; i++){if(!validrow[i]){
valid =false;break;}}if(valid=true){JOptionPane.showMessageDialog(Gui.this,"Glückwunsch! Dein Ergebnis ist korrekt!","RICHTIG!",JOptionPane.INFORMATION_MESSAGE);}if(valid=false){JOptionPane.showMessageDialog(Gui.this,"Leider falsch! Versuch es weiter!","FALSCH!",JOptionPane.INFORMATION_MESSAGE);}
Ersetze "valid=..." durch "valid==..." und es sollte funktionieren.
"=" ist eine Zuweisung, "==" ein Vergleich.
So wie du das gemacht hast wird zuerst valid in der IF-Abfrage auf true gesetzt und wenn die Zuweisung funktioniert hat, so wird dem IF "true" gemeldet wodurch dann die Ausgabe erfolgt.