所以我试图编写一个递归方法来对一个整数的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));
}
}
这些都是编译和工作。但是,我试图找出一种方法让用户输入数组的大小和数组中的数字,而不是输入客户端内的数组大小和数字。
答案 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
这些情况总是好的。