代码疑问

「已注销」 2014-01-01 01:51:56
请问这段代码怎么修改使它变成输出结果为有换行的:
例如:
原始字符串是"abc",打印得到下列所有组合情况
"a" "b" "c"

"ab" "bc" "ca" "ba" "cb" "ac"

"abc" "acb" "bac" "bca" "cab" "cba"


public static void main(String[] args) throws Exception{
InputStream is = System.in;
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);

String s = br.readLine();
char[] c = s.toCharArray();

String[] sa = new String[c.length];
ArrayList<String> al = new ArrayList<String>();

for (int i = 0; i < sa.length; i++) {
sa = String.valueOf(c.clone());
al.add(sa);
}
while(al.get(al.size()-1).length()!=sa.length){
ArrayList<String> al2 = new ArrayList<String>();
for (int i = 0; i < sa.length; i++) {
String s2;

for (String s3:al) {
if(!s3.contains(sa) && s3.length()==al.get(al.size()-1).length()){
s2 = sa+s3;
al2.add(s2);
}
}
}
for(String s4: al2){
al.add(s4);
}
}
for(String s5:al){

System.out.print(s5+"\t");


}
}
}
...全文
121 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
sleeplacker 2014-01-01
  • 打赏
  • 举报
回复
用我这个代码就行
package pk;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * 
 * @author lingnag
 * 
 */
public class FullSort {
	/**
	 * 递归算法:将数据分为两部分,递归将数据从左侧移右侧实现全排列
	 * 
	 * @param datas
	 * @param target
	 */
	private static void sort(List datas, List target, int size) {
		if (target.size() == size) {
			for (Object obj : target)
				System.out.print(obj);
			System.out.print(" ");
			return;
		}
		for (int i = 0; i < datas.size(); i++) {
			List newDatas = new ArrayList(datas);
			List newTarget = new ArrayList(target);
			newTarget.add(newDatas.get(i));
			newDatas.remove(i);
			sort(newDatas, newTarget, size);
		}
	}

	public static void main(String[] args) throws IOException {
		InputStream is = System.in;
		InputStreamReader isr = new InputStreamReader(is);
		BufferedReader br = new BufferedReader(isr);
		System.out.print("输入一个字符串:");
		String str = br.readLine();
		char[] cArr = str.toCharArray();
		String[] datas = new String[cArr.length];
		int pos = 0;
		for (char ch : cArr) {
			datas[pos++] = new String("" + ch);
		}
		for (int i = 1; i <= datas.length; ++i) {
			sort(Arrays.asList(datas), new ArrayList(), i);
			System.out.println();
		}
	}
}
sleeplacker 2014-01-01
  • 打赏
  • 举报
回复
你的代码有问题,再复一次吧

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧