java - 打印数字系列 1,n,2,n-1,3,n-2,... 的逻辑应该是 1 到 n(给定的输入)

标签 java algorithm

我正在尝试基本编程,并且遇到了这个问题。我有一个返回类型为字符串的函数,它接受整数输入并且必须打印提到的系列。这就是我所做的。

String s=new String("h");
int[] a=new int[n];
int k=1;
for(int i=0;i<n;i+=2)
{
  a[i]=b;//line6
  a[i+1]=n-(b-1);//line7
  b++;
} 
s=Arrays.toString(a);
return s;

当我输入“偶数”时。就像 4 一样。我得到了正确的结果 [1,4,2,3]。

但是当我输入“奇数”时。就像 5 一样。我得到一个 ArrayOutOfBoundException

我知道第 6 行和第 7 行哪里出了问题,但我不知道如何相应地修改它。

我还希望将字符串返回为 1 n 2 n-1 3 n-2 ... 而不是 [1,n,2,n-1,3,n-2,..]

最佳答案

那是因为你有一个从 i = 0 开始运行的循环至i < n ,并且您正在尝试访问 a[i + 1] 。这在偶数上运行良好,因为您正在递增 2每次,最后一次迭代都会检查 a[n - 2]a[n - 1] .

ArrayIndexOutOfBoundException然而,发生在奇数上,因为最后一次迭代尝试访问 a[n - 1]a[n] .

修改循环的一种方法是仅增加 1 ,并设置值a[i]通过检查 i 的奇偶性循环内:

for(int i = 0; i < n; i++, b++) {
    a[i] = (i % 2 == 0)? b: (n - (b - 1));
} 

关于java - 打印数字系列 1,n,2,n-1,3,n-2,... 的逻辑应该是 1 到 n(给定的输入),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41662956/

相关文章:

java - Spring/Java找不到main方法

java - Android Studio : How to resize an image before uploading to server?

c# - HackerRank 攀升排行榜

algorithm - 数组中给出与整个数组相同或值的最小元素数

algorithm - 计算整数中的尾随零最有效的方法是什么?

java - 将复制任何多维数组的通用函数

java - JAXB,CXF : There's no ObjectFactory with an @XmlElementDecl for the element . ..与

algorithm - 实时数据捕获的百分比

algorithm - 搜索和排序大数据集

java - 使用 OnItemCLick 时 Android ArrayList 搜索过滤器更改索引