为什么数组中的第一个元素被赋值为 0.0?注意:不是问INDEX,是问价值

这是高中作业。在我的第一个 for() 循环中,我根据用户输入构建了一个数组。但是,数组的第一个值被跳过并设置为 0.0


我已经彻底追踪了代码,但无济于事。


import java.util.Scanner;

import java.lang.Math;


public class TestProject {


    public static void main(String[] args)

    {


        Scanner scan = new Scanner(System.in);

        System.out.println("How long do you want the array?");

        int length = scan.nextInt();


        if(Math.abs(length) != length)

        {

            System.out.println("Not a valid length!");

        }

        else

        {

            double[] array = new double[length];

            for(int i = 0; i < length-1; i++)

            {

            System.out.println("Enter a number");

            array[i] = scan.nextDouble();

            }


            double[] finalarray = new double[array.length];

            int finalarraycount = 1;

            double flag = -1;

            for(int x = 0; x<(array.length -1); x++)

            {

                if(array[x] > flag)

                {

                    finalarray[finalarraycount] = array[x];

                    flag = array[x];

                    finalarraycount++;


                }

            }

            System.out.print("Your array is {");

            for(int y = 0; y<finalarray.length; y++)

            {

                System.out.print(finalarray[y]);

                System.out.print(", ");

            }

            System.out.println("}");



        }



    }


}



我想将由可变长度确定的指定数量的值输入到数组中,然后按从小到大的顺序打印数组。相反,它会跳过索引[0],并将其设置为 0.0。


一只甜甜圈
浏览 145回答 3
3回答

慕桂英4014372

finalarraycount应该初始化为0,而不是1。

烙印99

int finalarraycount = 1;finalarray[finalarraycount] = array[x];这就是为什么。您将其初始化为 1,但数组中的第一个索引为 0。如果为 0,则会影响数组中的第一个索引。

潇潇雨雨

这只是标准编译器行为。finalarray[0]没有被第二个 for 循环设置为任何内容。因此,Java 将其初始化为 0.0,如下所述: https:&nbsp;//docs.oracle.com/javase/specs/jls/se8/html/jls-4.html#jls-4.12.5
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java