Java练习题
三个数相加和等于20,输出所有的三个数(三个数为1-9,可以重复)!
[解决办法]
import java.util.ArrayList;import java.util.List;public class Test6 { /** * @param args */ public static void main(String[] args) { int k = 0; String str; List list = new ArrayList(); for (int i = 1; i <= 9; i++) { for (int j = 1; j <= 9; j++) { k = 20 - i - j; if (k >= 1 && k <= 9) { str = i + "-" + j + "-" + k; System.out.println(str); list.add(str); } } } System.out.println("去除掉重复的,即2-9-9 -- 9-9-2应该是相同的:"); int cnt = 0; String str1 = ""; while (cnt < list.size()-1){ str = (String) list.get(cnt); for (int i = list.size() -1 ; i > cnt; i--){ str1 = (String)list.get(i) ; if (str1.indexOf(str.charAt(0)) >= 0 && str1.indexOf(str.charAt(2)) >= 0 && str1.indexOf(str.charAt(4)) >= 0) { list.remove(i); } } cnt++ ; } for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } }}
[解决办法]
package temp;import java.util.Arrays;import java.util.HashSet;import java.util.Iterator;public class Test2 { public static void main(String[] args) { HashSet<String> hs = new HashSet<String>(); int k = 0; for (int i = 1; i <= 9; i++) { for (int j = 1; j <= 9; j++) { k = 20 - i - j; if (k >= 1 && k <= 9) { int a[] = {i,j,k}; Arrays.sort(a); StringBuilder sb = new StringBuilder(); for(int n=0;n<a.length;n++) { sb.append(a[n]+" "); } hs.add(sb.toString()); } } } Iterator<String> iterator = hs.iterator(); while(iterator.hasNext()){ String s = iterator.next(); System.out.println(s); } }}