一种java程序,它从1到9获取输入,从左到右打印所有奇数,然后从右到左打印偶数
我只需要一个循环来存档此输出 输入={1,2,3,4,5,6,7,8,9}输出={1,3,5,7,9,8,6,4,2}一种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
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;
}
}
}
}