数组总和用户输入递归

时间:2016-02-23 03:56:28

标签: java arrays recursion user-input

所以我试图编写一个递归方法来对一个整数的arraylist求和并创建一个客户端来测试它。

我的班级是:

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));

   }
}

这些都是编译和工作。但是,我试图找出一种方法让用户输入数组的大小和数组中的数字,而不是输入客户端内的数组大小和数字。

3 个答案:

答案 0 :(得分:0)

您可以使用java扫描程序从cmd提示符获取输入 https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html

答案 1 :(得分:0)

您可以尝试使用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);
}

使用这种方法,您无需询问用户想要添加的项目数。

答案 2 :(得分:0)

正如@Satya建议的那样,您可以从命令行读取输入作为命令行参数并将其解压缩为:

Integer[] array = Stream.of(args).map(Integer::parseInt).toArray(size -> new Integer[size]);

您不希望将数组的长度传递给方法ArraySum,我想您正在这样做,因为您无法从数组中删除元素。一种方法是使用Arrays.copyOf()使用它来复制数组的一部分作为另一个数组。

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