Hallo,
habe ein Programm, dass ausgehende von einem Array {"Frans", "Hans", "Peter"} alle möglichen NamensKombinationen (nur in eine Richtung) bildet.
Also erst von Franz aus, dann von Hans aus, . . .
Diese möglichen Kombinationen schreibe ich dann jeweils in ein Mehrdimensionales Array:
Frans
Frans, Hans
Frans, Peter
Frans, Hans, Peter
und
Hans,
Hans, Peter
und
Peter
Nun ist ja das Bilden der Kombinationen von Frans aus unabhängig vom Bilder der Kombinationen von Hans aus und so weiter. Frage mich, ob ich in der run Methode einen kritischen block habe, bezogen auf das mehrdimensionale Array?
habe ein Programm, dass ausgehende von einem Array {"Frans", "Hans", "Peter"} alle möglichen NamensKombinationen (nur in eine Richtung) bildet.
Also erst von Franz aus, dann von Hans aus, . . .
Diese möglichen Kombinationen schreibe ich dann jeweils in ein Mehrdimensionales Array:
Frans
Frans, Hans
Frans, Peter
Frans, Hans, Peter
und
Hans,
Hans, Peter
und
Peter
Java:
public class Test {
//Main zum testen
public static void main(String [] args){
String[] name = {"Hans", "Franz", "Peter", "tim"};
for(int i=0; i<name.length; i++){
String[] tmp = new String[name.length-i];
for(int j=0; j<tmp.length; j++){
tmp[j] = name[j+i];
}
//Starten des Threads
(new Test1(tmp)).start();
System.out.println("Started Thread for Array with length: "+tmp.length);
}
}
}//KlassenEnde
Java:
public class Test1 extends Thread{
private int[] zeilen = {1,2,4,8,16,32,64,128,256,512,1024};
private String[] namen;
private String[][] kombinationen;
public Test1(){}
public Test1(String[] partei){
this.namen=partei;
}
@Override
public void run(){
//lock.lock();
kombinationen = new String[zeilen[namen.length-1]][namen.length];
int c = 0;
for(int i=0; i<namen.length; i++){
if(kombinationen[0][0]==null){//Wenn das Mehrdimensionale Array in der ersten Zeile / Spalte
kombinationen[0][0]=namen[i];//noch keine Eintrag hat
}else{//falls die erste Zeile / Spalte belegt ist
kombinationen[c][0] = kombinationen[0][0];//fuelle die naechste Zeile in Spalte 0
kombinationen[c][1] = namen[i];//fuelle die Spalte 1
int k=c;
while((k-1)>0){
int z = 0;
while(kombinationen[k-1][z]!=null){
kombinationen[c+1][z]=kombinationen[k-1][z];
z++;
}
kombinationen[c+1][z]=namen[i];
k--;
c++;
}
}
c++;
}
print();
}
public void print(){
System.out.println("++++++++++++++++++++++++++++++++++");
for(int i=0; i<this.kombinationen.length; i++){
for(int j=0; j<this.kombinationen[i].length; j++){
if(this.kombinationen[i][j]!= null){
System.out.print(""+this.kombinationen[i][j]);
}
}
System.out.println('\n');
}
System.out.println("------------------------------");
}
}//Klassenende
Nun ist ja das Bilden der Kombinationen von Frans aus unabhängig vom Bilder der Kombinationen von Hans aus und so weiter. Frage mich, ob ich in der run Methode einen kritischen block habe, bezogen auf das mehrdimensionale Array?
Zuletzt bearbeitet von einem Moderator: