我有一个作业,我必须打印一个包含这些数字的双数组:
1,2,3,4,5,6,7
像这样1,7,2,6,3,5,4
所以第一个和最后一个应该从数组的开头和数组的结尾交替。
我理解输出可能令人困惑,但最新发生的是第一个元素应该打印(1),然后是最后一个元素(7),然后它必须返回到开头并打印下面的元素(3) ,然后回到最后并在最后(6)等打印以下元素。
到目前为止,这是我的代码:
public static void print(double [] a){
int l = a.length-1;
for(int i = 0; i < a.length; i++){
if(a[i] == a[l]){
System.out.print(a[i]);
break;
}
System.out.print(a[i]+", "+a[l--]+", ");
}
}
代码可以工作,但前提是数组的大小是奇数。我想确保此代码适用于所有类型的大小数组..请帮助
答案 0 :(得分:2)
这里的规则相当简单:
就数组而言,您将此视为一口大小的问题。
就代码而言,这看起来像这样。请注意,在Java中,您可以在循环中声明多个变量,并在以后的表达式中使用它们。
int[] values = {1, 2, 3, 2, 1};
// i shouldn't advance beyond the first half of the list.
// j shouldn't advance beyond the second half of the list.
for(int i = 0, j = values.length - 1; i <= values.length/2 && j >= values.length/2; i++, j--) {
// i and j are at the same point - just print it and call it good.
if(i == j) {
System.out.print(values[i]);
break;
} else {
System.out.print(values[i] + " ");
System.out.print(values[j] + " ");
}
}
答案 1 :(得分:1)
一个。试试i <= l
- 它将处理偶数/奇数长度
B中。比较指标而不是值,您需要它们直到数组的中间i>=a.length/2
public static void print(double [] a) {
int l = a.length - 1;
for (int i = 0; i <= l; i++, l--) {
if (i>=a.length/2) {
System.out.print(a[i]);
break;
}
System.out.print(a[i] + ", " + a[l] + ", ");
}
}
答案 2 :(得分:0)
public static void print(double [] a) {
int l = a.length-1;
for(int i = 0; i < a.length; i++){
if(i ==l){
System.out.print(a[i]);
break;
} else if (i>l ){
break;
}
System.out.print(a[i]+", "+a[l--]+", ");
}
请试试这个......这会有帮助