Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 抑制阵列的负元素_Arrays_Elements_Negative Number - Fatal编程技术网

Arrays 抑制阵列的负元素

Arrays 抑制阵列的负元素,arrays,elements,negative-number,Arrays,Elements,Negative Number,我正在编写一个代码,它抑制或将int数组的负元素推送到数组的底部,而不改变数组其余部分的顺序。这基本上意味着它不仅仅是数组的排序。到目前为止,我得到了这个: class supparray { public static void main(String args[]) { int array1Index = 0, array2Index = 0; int array[] = {1, -8, 5, 12, -6, 2, 4}; i

我正在编写一个代码,它抑制或将int数组的负元素推送到数组的底部,而不改变数组其余部分的顺序。这基本上意味着它不仅仅是数组的排序。到目前为止,我得到了这个:

class supparray
{
    public static void main(String args[])
    { 
        int array1Index = 0, array2Index = 0;
        int array[] = {1, -8, 5, 12, -6, 2, 4};
        int length = array.length;
        int array1[] = new int[length] ;
        int array2[] = new int[length];
        for(int i = 0; i<array.length; i++)
        {
            if(array[i]<0)
            {

                array1[i] = array[i];
                array1Index+=1;
            }
            else
            {
                array2[i] = array[i];
                array2Index+=1;
            }
            for(int j = 0; j<array2Index; j++)
            {
                array1[array1Index+j] = array2[j];
            }
        }
        System.out.println(array1);
    }


}
类数组
{
公共静态void main(字符串参数[])
{ 
int-array1Index=0,array2Index=0;
int数组[]={1,-8,5,12,-6,2,4};
int length=array.length;
整数数组1[]=新整数[长度];
整数数组2[]=新整数[长度];

对于(int i=0;i这里有两个答案。第一个是代码的答案。您必须正确设置数组的格式

System.out.println(Arrays.toString(array1));
第二个答案只是解决问题的另一种方法。它更干净、更高效,并且至少在开始操作之前检查数组长度是否大于1

import java.util.Arrays;

class supparray
{
public static int array[] = {1, -8, 5, 12, -6, 2, 4};
public static int storage=0;
public static void main(String args[])
{ 
    int length = array.length;
    System.out.println (length);
    if (length>1)
    {
        for(int i = 0; i<(length-1); i++)
        {
            if (array[i]<0)
            {
                storage=array[i];
                for (int j = 0; j<(length-i-1);j++)
                {
                    array[i+j]=array[i+j+1];
                }
            array[length-1]=storage;
            }
        }
    }
    System.out.println(Arrays.toString(array));
}
}
导入java.util.array;
类数组
{
公共静态int数组[]={1,-8,5,12,-6,2,4};
公共静态int存储=0;
公共静态void main(字符串参数[])
{ 
int length=array.length;
System.out.println(长度);
如果(长度>1)
{

对于(int i=0;如果您询问JDK,我假设这是Java,而不是C#。对吗?我建议您将使用的语言添加到问号中。另外,在数组上调用
println
不会打印数组。是的,我正在使用Java。下次会记得将Java添加为问号。只是认为语法会改变我建议我使用Java。无论如何,非常感谢!好吧。我有点理解。但是,你能解释一下我的代码哪里出了问题吗?数组是一种无法打印出来的特定数据结构,你会看到结果的混乱。打印数组的另一种方法是一个for循环,每次显示一个元素,例如:for int I=0;我知道了。它在现在是我的了。所以基本上,我的打印部分搞错了,我的逻辑虽然笨拙,但在技术上是正确的,对吗?没错。你的代码很好,除了打印。数组需要以某种方式操作才能处于可以清晰打印的状态。