方法中的变量数组长度

时间:2016-02-01 20:10:26

标签: java arrays

我需要解决一个如下所示的练习:

  1. 用户开始将整数添加到数组中;
  2. 当他想停止添加号码时,他应该输入-1;
  3. 在输入-1后,系统会显示一条消息,其中显示已添加的号码及其count
  4. 所以,如果他输入:1 8 6 9 -1

    结果将是:

    输入的数字为:1 8 6 9 -1并且计数为5

    我试着编写代码:

    import java.util.*;
    import java.lang.*;
    import java.io.*;
    
    /* Name of the class has to be "Main" only if the class is public. */
    class exercice
    {
        public static void main (String[] args) throws java.lang.Exception
        {
            readNumbers();
        }
    //No parameters inside: just readNubers()
        public static void readNumbers()
        {
            int[] num = new int[n];
            int x = 0;
            while(x!=-1)
            {
                for(int i=0; i<n; i++)
                {
                    System.out.println("Enter a number");
                    Scanner scan = new Scanner(System.out);
                    x = scan.nextInt();
                    num[i]=x;
                }
            }
            for(int j = 0; j<num.length; i++)
            {
                System.out.println(num[i]);
                System.out.println("The total of entered numbers is: "+num.length);
            }
        }
    }
    

    但是,我仍然坚持如何定义变量数组长度,而不使用ArrayList。所以我需要像上面的代码一样解决它。

    在课程中,我们有一个例子,我们可以定义一个长度未知的数组,如下所示:

    method_name(int ...a)但无法知道如何使用它。

3 个答案:

答案 0 :(得分:2)

  

在课程中,我们有一个例子,我们可以定义一个长度未知的数组,如下所示:

     

method_name(int ... a)但不知道如何使用它。

这不适用于此:即使在这种情况下,实际的数组大小也必须在编译时知道。当你调用一个varargs方法时,你总是知道数组的实际大小(或者你传入一个在其他地方调整大小的数组对象)。

如果你不能使用ArrayList,你必须重新发明它:你必须手动创建一个更大的数组,然后将小数组的内容复制到更大的数组中。这就是ArrayList内部的作用。 (或者,您可以从一个巨大的阵列开始,只填充其中的一部分,然后选择您需要的部分。)

所有Java数组的大小都在创建时固定。

答案 1 :(得分:0)

如果您无法使用列表,您的选项是:

  1. 定义一个非常大的数组并尽可能多地填充
    1. 当您的阵列变满时,请创建一个新阵列并复制内容。
    2. 或者,当然,您可以构建列出数字的字符串,而不是将它们存储在数组中。

答案 2 :(得分:0)

我没有读过那些说过&#34;我需要解决一个练习的部分&#34;并为提供完整的解决方案道歉。我在开头添加一些提示,最后添加一个扰流警报。

您可以将数字存储在String变量中,以空格分隔。然后,您可以将其拆分为String数组。最后,设置一个int数组大小以匹配String数组并将数据解析为它。

完整解决方案:

以下是将数字存储到int数组中的代码:

Scanner input = new Scanner(System.in);

System.out.print("Please enter the numbers: ");
int nextNum = 0;
String nums = "";
do{
    nextNum = input.nextInt();
    nums += nextNum + " ";
}while(nextNum != -1);

String[] nums2 = nums.split(" ");
int[] x = new int[nums2.length];

for(int i = 0; i < nums2.length; i++)
    x[i] = Integer.parseInt(nums2[i]);

现在您有一个数组(x),其中包含用户输入的所有数字。会发生什么是将数字添加到字符串中,并用空格分隔。然后,在用户输入-1之后,String将转换为String数组。最后,它从String数组的每个元素解析int,并将其放在自己的int数组元素中。

希望这有帮助!