这是在某家公司面试碰到的。题目是这样的,有一个数组{1,2,3,4,5,6,7,8,9,10,11},要求三个为一组按以下形式输出:
<div>
<group>1,2,3</group>
<group>4,5,6</group>
<group>7,8,9</group>
<group>10,11</group>
</div>
<div>
<group>1,2,3</group>
<group>4,5,6</group>
<group>7,8,9</group>
<group>10,11</group>
</div>
int[] a = {1,2,3,4,5,6,7,8,9,10,11};
System.out.println("<div>");
for (int i=0; i<a.length; i+=3) { //只能尽量减少循环次数了,3个3个循环而不是1个1个循环
if (i < a.length - 2) {
System.out.printf("<group>%d,%d,%d</group>\n", a[i], a[i+1], a[i+2]);
} else if (i < a.length - 1) {
System.out.printf("<group>%d,%d</group>\n", a[i], a[i+1]);
} else {
System.out.printf("<group>%d</group>\n", a[i]);
}
}
System.out.println("</div>");
public static void main(String[] args) {
int[] a = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
System.out.println("<div>");
for (List<String> group : getList(a, 5)) { // 前面是一个div中需要显示的数据,后面是每个group中要显示几条数据,方便修改
System.out.print("<group>");
for (int i = 0; i < group.size(); i++) {
String str = group.get(i);
if (i != group.size() - 1)
str += ",";
System.out.print(str);
}
System.out.println("<group>");
}
System.out.println("</div>");
} private static List<List<String>> getList(int[] div, int count) {
List<List<String>> list = new ArrayList<List<String>>();
List<String> group = null; // 类似SAX解析器的操作
for (int i = 0; i < div.length; i++) {
if (i % count == 0) { // 开始事件
group = new ArrayList<String>();
}
group.add(div[i] + "");
if (i % count == 1) { // 结束事件
list.add(group);
}
if (div.length % count == 1 && i == div.length - 1) { // 是否补加
list.add(group);
}
} return list;
}
int[] nn=new int[]{1,2,3,4,5,6,7,8,9,10,11};
StringBuilder sb=new StringBuilder();
sb.append("<div>\n");
for(int s=3,i=0,il=nn.length,j,jl;i<il;i+=s){
sb.append("<group>");
j=i;
jl=j+s;
if(jl>il){
jl=il;
}
for(;j<jl-1;j++){
sb.append(nn[j]+",");
}
sb.append(nn[j]);
sb.append("</group>\n");
}
sb.append("</div>\n");
System.out.println(sb.toString());
如果固定是3的话就不用嵌套2层循环 直接if 判断
private static int[] div = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
private static int index = 0; public static void main(String[] args) {
System.out.println("<div>");
show(3);
System.out.println("</div>");
} private static void show(int count) {
System.out.print("<group>");
for (int i = index; i < div.length; i++) {
if (i == count + index) {
System.out.println("</group>");
index = i;
show(count);
return;
}
System.out.print(div[i] + (i % count == count-1 || i == div.length - 1 ? "" : ","));
}
System.out.println("</group>");
}