Hallo, ich habe es hier jetzt letzendlich geschafft alle möglichen Kombinationen eines Arrays herauszufinden und auszugeben. Nun würde ich gerne meinen Code so bearbeiten dass man die Größe der Kombinationen begrenzen kann. Momentan sind die Kombinationen so groß wie das Array. So werden aus 1, 2, 3, 4 Kombinationen wie 1, 2, 4, 3 usw. gemacht. Mein Ziel wäre es nun, dass man dann daraus Kombinationen wie: 1, 2, 3 ; 1, 2, 4 usw. machen kann. Schonmal danke im voraus. Hier mein Code:
</integer></integer></integer>
Code:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Vector;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.ScrollPaneConstants;
public class GridBagLayoutExample extends JFrame implements ActionListener {
private JPanel panel;
private JButton ok;
private JTextArea text;
private String str;
private String a;
private String b;
private int zahlKombi;
private JScrollPane scroll;
public GridBagLayoutExample() {
panel = new JPanel();
ok = new JButton("OK");
ok.addActionListener(this);
str = ("1, 2, 3, 4");
text = new JTextArea(str, 16, 16);
text.setEditable(false);
scroll = new JScrollPane(text);
scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
panel.add(scroll);
panel.add(ok);
add(panel);
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new GridBagLayoutExample();
}
public void permute(java.util.List<integer> intList, int k){
for(int i = k; i < intList.size(); i++){
java.util.Collections.swap(intList, i, k);
permute(intList, k+1);
java.util.Collections.swap(intList, k, i);
}
if (k == intList.size() -1){
text.append(Arrays.toString(intList.toArray()) +" " + ", " + "\n");
b=text.getText();
b = b.replace( "[", "" );
b = b.replace( "]", "" );
text.setText(b);
}
}
@Override
public void actionPerformed(ActionEvent arg0) {
int k = 0;
a = text.getText();
String[] zahlenstring = a.split(", ");
int[] zahlenint = new int[zahlenstring.length];
for(int i=0; i < zahlenstring.length ;i++) {
zahlenint[i] = Integer.parseInt(zahlenstring[i]);
}
ArrayList<integer> intList = new ArrayList<integer>();
for (int i = 0; i < zahlenint.length; i++) {
intList.add(zahlenint[i]);
}
permute(intList, k);
}
}