Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.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
Java 数组和用户输入递归_Java_Arrays_Recursion_User Input - Fatal编程技术网

Java 数组和用户输入递归

Java 数组和用户输入递归,java,arrays,recursion,user-input,Java,Arrays,Recursion,User Input,因此,我试图编写一个递归方法来求整数数组列表的和,并创建一个客户端来测试它 我的班级是: import java.util.ArrayList; public class SumArray { public static int ArraySum(int[]arrayList, int sum, int size) { sum = sum + arrayList[size]; size--; while(size >= 0)

因此,我试图编写一个递归方法来求整数数组列表的和,并创建一个客户端来测试它

我的班级是:

import java.util.ArrayList;
public class SumArray
{
    public static int ArraySum(int[]arrayList, int sum, int size)
    {
        sum = sum + arrayList[size];
        size--;
        while(size >= 0)
        {
          return ArraySum(arrayList, sum, size);
        }
        return sum;
    }
}
我的客户是:

import java.util.ArrayList;
public class ArraySumClient
{
   public static void main()
   {
      System.out.print("The sum of the array is: ");
      SumArray r = new SumArray();
      int[] myList = new int[5];
      myList[0] = 1;
      myList[1] = 2;
      myList[2] = 3;
      myList[3] = 4;
      int size = myList.length-1;
      System.out.println(r.ArraySum(myList, 0, size));

   }
}

这些都是编译和工作。但是,我正在尝试为用户找到一种方法来输入数组大小和数组中的数字,而不是在客户端中输入数组大小和数字。

您可以使用java scanner从cmd提示符获取输入

您可以尝试使用
ArrayList
而不是数组。它将允许您根据需要动态添加任意数量的项目:

public static void main() {
    List<Integer> myList = new ArrayList<Integer>();
    myList.add(1);
    myList.add(2);
    myList.add(3);
    myList.add(4);

    // compute sum
    int sum = 0;
    for (Integer value : myList) {
        sum += value;
    }

    System.out.println("The sum is " + sum);
}
publicstaticvoidmain(){
List myList=new ArrayList();
添加(1);
添加(2);
添加(3);
添加(4);
//计算总和
整数和=0;
for(整数值:myList){
总和+=数值;
}
System.out.println(“总和为”+总和);
}

使用这种方法,您不需要询问用户打算添加多少项。

正如@Satya所建议的,您可以将命令行中的输入作为命令行参数读取,并将其提取为:

Integer[] array = Stream.of(args).map(Integer::parseInt).toArray(size -> new Integer[size]);
您不想将数组的长度传递给方法
ArraySum
,我想您这样做是因为无法从数组中删除元素。一种方法是使用
Arrays.copyOf()
将数组的一部分复制为另一个数组


我认为使用
列出这些情况总是好的。

从命令提示符读取输入值。只需谷歌一下。
可以安全地替换为
如果
,因为你的“循环”在第一次迭代后永远不会存在。不仅仅是你想要在客户端输入数字的大小。这些应该是动态的,当然!我知道。最好给出一些建议,而不是在这里编写代码。;)