一种java程序,它从1到9获取输入,从左到右打印所有奇数,然后从右到左打印偶数

一种java程序,它从1到9获取输入,从左到右打印所有奇数,然后从右到左打印偶数,java,arrays,Java,Arrays,我只需要一个循环来存档此输出 输入={1,2,3,4,5,6,7,8,9}输出={1,3,5,7,9,8,6,4,2} public static void printOddEven(int[] arr) { int newArray[] = new int[10]; for (int i = 0; i < arr.length; i++) { if (arr[i] % 2 != 0) { newArray[i] = arr

我只需要一个循环来存档此输出

输入={1,2,3,4,5,6,7,8,9}输出={1,3,5,7,9,8,6,4,2}

    public static void printOddEven(int[] arr) {
    int newArray[] = new int[10];

    for (int i = 0; i < arr.length; i++) {
        if (arr[i] % 2 != 0) {
            newArray[i] = arr[i];
            System.out.print(newArray[i] + " ");
        }
    }
    for (int i = arr.length - 1; i > 0; i--) {
        if (arr[i] % 2 == 0) {
            newArray[i] = arr[i];
            System.out.print(newArray[i] + " ");
        }

    }
}
publicstaticvoidprintodd偶(int[]arr){
int newArray[]=新int[10];
对于(int i=0;i0;i--){
如果(arr[i]%2==0){
newArray[i]=arr[i];
System.out.print(newArray[i]+“”);
}
}
}

如果要使用阵列:

int [] result = new int[arr.length];
int counterFront = 0;
int counterBack = arr.length - 1;
for (int i = 0; i < arr.length; i++) {
        if (arr[i] % 2 != 0) {
            result[counterFront++] = arr[i];
        }

        if (arr[i] % 2 == 0) {
            result[counterBack--] = arr[i];
        }
 }
return result;
int[]结果=新的int[arr.length];
int=0;
int反击=arr.length-1;
对于(int i=0;i
编辑:感谢一条评论,发现它有一个ArrayIndexOutOfBounds。

intNewArray[]=newint[9];
int newArray[] = new int[9];
for (int i = 0; i < arr.length; i++) {
    if (arr[i] % 2 != 0) 
        newArray[i/2] = arr[i];
    else 
        newArray[8-(i/2)] =  arr[i];
 }

 System.out.println (java.util.Arrays.toString (newArray));
对于(int i=0;i
只需使用右边的子体索引 为什么要使用数组呢?是作业吗?请注意,当对9个元素使用int[10]时,会出现一个off by one错误,因为您的newArray太大,这是数组的一个典型问题

publicstaticvoidprintodd偶(int[]arr){
public static void printOddEven(int[] arr) {
    int newArray[] = new int[9];

    for (int i = 0; i < arr.length; i++) {
        if (arr[i] % 2 != 0)
            newArray[i/2] = arr[i];
        else
            newArray[arr.length - i/2 - 1] = arr[i];                
    }

    System.out.println(java.util.Arrays.toString(newArray));    
}
int newArray[]=newint[9]; 对于(int i=0;i

我认为这更像是一个数学问题,而不是一个编程问题。这是关于知道递增索引和递减索引之间有一个简单的算术关系

int[] arr = {1,2,3,4,5,6,7,8,9};

public static void printOddEven(int[] arr) {
    int[] odds = new int[5];  // arr.length == 9
    int[] even = new int[4];

    for (int i = 0; i < arr.length; i++) {
        if (arr[i] % 2 == 0) {
            // This is where the magic happens
            // It is filling the array from the back
            even[even.length - (i / 2) - 1] = arr[i];
        } else {
            odds[(i / 2)] = arr[i];
        }
    }

    System.out.println(java.util.Arrays.toString(odds));
    System.out.println(java.util.Arrays.toString(even));
}

这仅适用于
123456789
打印
135798642

public class Sample {

public static void main(String[] args) throws Exception {
     int j=0;
     int p=2;
    int newArray[]= {1,2,3,4,5,6,7,8,9};
    for(int i=0;i<=newArray.length-1;i++)
    {
        if(i<=4)
        {
            System.out.print(newArray[i]+j);
            j++;

        }
        else
        {
            System.err.print(newArray[i]+p);
            p=p-3;
    }
}

}
}
公共类示例{
公共静态void main(字符串[]args)引发异常{
int j=0;
int p=2;
int newArray[]={1,2,3,4,5,6,7,8,9};

对于(int i=0;我只需要一个循环来存档这个输出好的。你发布的代码有两个。它有效吗?你已经告诉了我们你想要什么,但是你忘了问一个问题。从结尾开始,在开头加奇数,在结尾加偶数怎么样?如果i小于5,打印1+i*2。否则打印8-(i-5)*2当然,如果输入可以是其他任何东西,你必须首先计算出在前一种情况下的结果是1、8和5。这是一个典型的例子,重点是你自己去弄清楚(通过查看你希望每个i发生什么).让别人给你答案会给你答案,但对你试图解决的下一个问题没有多大帮助(因为你回避了解决问题的整个过程)。您仍然需要第二个循环来打印
newArray
的内容。我理解
output
不是字面意思,而是作为*实现输出,结果',因为问题继续以Java源代码表示法处理两个数组,并且示例中没有带花括号的两个循环。im重点放在一个循环上,以及如何填充顺序正确的新数组。只要提问用户没有澄清问题,这只是你的解释。你可能是对的,但我不这么认为。我想他和你都没有提到,他的新数组与arr相同,除了尾随的0,因为它的用途是什么?@userunknown我相信这是一个正确的int保留OP的要求。向上投票。@MiljenMikic:好吧,谢谢。我希望Coderinos的解决方案不正确,这样我就可以否决他的方法,但我甚至不确定他是否否决了我,我也不喜欢报复性投票。但我向上投票了其他有效的解决方案。除了他的,因为它没有填满新的数组,还有另一个,它填满了新的数组两个数组,第三个数组,生成一个AIOOBE.:)如果(arr[i]%2==0&&i>=arr.length){newArray[i]=arr[i]..
索引越界异常incomingUsing
数组。toString
在此上下文中是欺骗IMO@CoderinoJavarino作弊?OP想要一个单循环的排序输出。这就是我提供的,还有一些解释。数组到字符串只是隐藏了标准库中的另一个循环。显然,要求是解决,如何将索引处的输入直接映射到同一索引处的输出。这为我抛出了一个AIOOBE。对不起,在side for循环中(int i=0;i
public class Sample {

public static void main(String[] args) throws Exception {
     int j=0;
     int p=2;
    int newArray[]= {1,2,3,4,5,6,7,8,9};
    for(int i=0;i<=newArray.length-1;i++)
    {
        if(i<=4)
        {
            System.out.print(newArray[i]+j);
            j++;

        }
        else
        {
            System.err.print(newArray[i]+p);
            p=p-3;
    }
}

}
}