import javax.swing.JOptionPane;
public class Permutations {
public static void main(String[] args) throws Exception {
String str = null;
str = JOptionPane.showInputDialog("Enter a word");
StringBuffer strBuf = new StringBuffer(str);
doPerm(strBuf,str.length());
}
private static void doPerm(StringBuffer str, int index){
String[] anArrayOfStrings;
if(index == 0){
System.out.println(str);
}
else {
doPerm(str, index-1);
int currPos = str.length()-index;
for (int i = currPos+1; i < str.length(); i++) {
swap(str,currPos, i);
doPerm(str, index-1);
swap(str,i, currPos);
}
}
}
private static void swap(StringBuffer str, int pos1, int pos2){
char t1 = str.charAt(pos1);
str.setCharAt(pos1, str.charAt(pos2));
str.setCharAt(pos2, t1);
}
}
使用上面的代碼我排列一個單詞並在控制檯中打印它們。JOptionPane中的排列
樣品 輸入:壞
輸出:
bad
bda
abd
adb
dab
dba
我想顯示的JOptionPane輸出。我試圖取代這一行
System.out.println(str);
有了這個
JOptionPane.showMessageDialog(null, str);
但所有的輸出不1周的JOptionPane加載。相反,它向我展示了一個帶有'bad'的JOptionPane,當我單擊OK或按下Enter時,帶有'bda'的JOptionPane將顯示出來,直到完成循環。我想要的是在單個JOptionPane中顯示6個輸出。
我也嘗試像數組,但幾乎相同的輸出。
private static void doPerm(StringBuffer str, int index){
ArrayList<String> list = new ArrayList<String>();
if(index == 0){
list.add(str.toString());
}
else {
doPerm(str, index-1);
int currPos = str.length()-index;
for (int i = currPos+1; i < str.length(); i++) {
swap(str,currPos, i);
doPerm(str, index-1);
swap(str,i, currPos);
}
}
JOptionPane.showMessageDialog(null, list);
}
別忘了,Swing是能夠呈現HTML,你可以生成輸出的HTML表格,並將其作爲消息參數 – MadProgrammer