在java中,使用临时变量将零移动到数组的末尾,而不使用任何UTIL

在java中,使用临时变量将零移动到数组的末尾,而不使用任何UTIL,java,arrays,Java,Arrays,我想把整数数组中的零移到最后。我的计划是制作一个新数组,将非零数按顺序放入新数组中,而另一个循环则取零并将它们放在数组的末尾 P.S i有一个int值,它计算零的数量,并且零的最终位置将由数组的长度决定-计数++ 我曾尝试将非零数字存储到临时数组中,并将零放在非零数字的原始位置(仅适用于数组末尾的非零数字) 公共类移动零{ 公共静态void main(字符串[]args){ int[]数字={1,2,0,4,5,0,4,0,1,3,4}; int[]array1=新的int[numbers.le

我想把整数数组中的零移到最后。我的计划是制作一个新数组,将非零数按顺序放入新数组中,而另一个循环则取零并将它们放在数组的末尾 P.S i有一个int值,它计算零的数量,并且零的最终位置将由数组的长度决定-计数++

我曾尝试将非零数字存储到临时数组中,并将零放在非零数字的原始位置(仅适用于数组末尾的非零数字)

公共类移动零{
公共静态void main(字符串[]args){
int[]数字={1,2,0,4,5,0,4,0,1,3,4};
int[]array1=新的int[numbers.length];
int i;
内部温度=0;
整数计数=0;
对于(i=0;i

我希望系统输出数组1,并将零移到末尾,但实际输出只是初始位置的所有数字

这一行为您提供了一个充满零的新数组:

    int[] array1 = new int[numbers.length];
当你这样做的时候

            array1[i] = numbers[i];
-您正在将数字移动到新数组中的同一索引。因此,在移动的数字之间仍然保留零,因此结果似乎是相同的数组

相反,您需要在
array1
中保留一个单独的索引,指向您尚未填充的下一个位置。这是您希望放置
numbers
中的下一个非零元素的位置

提示:由于新数组由创建时的零填充,因此不需要做任何事情来移动零

提示:使用
System.out.println(Arrays.toString(array1))
用于打印整个新阵列。它将提供更可读的输出。

您可以尝试以下方法:

import java.util.Arrays;
public class StackOverflow1 {
public static void main(String[] args) {
    int[] numbers = { 1, 2, 0, 4, 5, 0, 4, 0, 1, 3, 4 };
    int[] array1 = new int[numbers.length];

    int i;
    int temp;
    int count = 0;
    for (i = 0; i < numbers.length; i++) {
        if ((numbers[i] != 0)) {
            temp = numbers[count];
            numbers[count] = numbers[i];
            numbers[i] = temp;
            count = count + 1;
        }
    }
    System.out.println(Arrays.toString(numbers));
}
}
导入java.util.array;
公共类堆栈溢出1{
公共静态void main(字符串[]args){
int[]数字={1,2,0,4,5,0,4,0,1,3,4};
int[]array1=新的int[numbers.length];
int i;
内部温度;
整数计数=0;
对于(i=0;i

输出:[1,2,4,5,4,1,3,4,0,0,0]

感谢您的贡献。这个答案太过填鸭式,对我的口味几乎没有什么解释。在我看来,你可能会为提问者解决家庭作业,最糟糕的情况是他或她不理解答案。相反,我建议你试着帮助他们学习,这样他们就能解决自己的作业。@mitesh7172。。。。我知道你在那里做了什么,但我的一个限制是我不能导入任何包或util。@Blorglue导入的
Arrays
util类仅用于打印,在不导入的情况下移动元素。将单独的索引保留到array1是什么意思?一个
int
变量,就像
i
一样@Blorglue,这样当移动一个数字时,你可以在
array1[i]
中放入
i
以外的内容。@NicholasK虽然这个问题的任务是相同的,但我相信我们可以通过指出他/她的代码中的错误来更好地帮助提问者。这要求将其视为一个新问题,而不是重复问题。请参见
import java.util.Arrays;
public class StackOverflow1 {
public static void main(String[] args) {
    int[] numbers = { 1, 2, 0, 4, 5, 0, 4, 0, 1, 3, 4 };
    int[] array1 = new int[numbers.length];

    int i;
    int temp;
    int count = 0;
    for (i = 0; i < numbers.length; i++) {
        if ((numbers[i] != 0)) {
            temp = numbers[count];
            numbers[count] = numbers[i];
            numbers[i] = temp;
            count = count + 1;
        }
    }
    System.out.println(Arrays.toString(numbers));
}
}