Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.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-将多个用户输入添加到arraylist中_Java_Arraylist - Fatal编程技术网

Java-将多个用户输入添加到arraylist中

Java-将多个用户输入添加到arraylist中,java,arraylist,Java,Arraylist,我试图读取用户在同一行上输入的无限数量的数字(用空格分隔),并打印0-all以上所有值的平方,而不使用for循环 例如 输入: 1234-10-15 输出: 三十 以下是我目前掌握的代码: ArrayList<Integer> numbers = new ArrayList<Integer>(); //insert into array if > 0 int x = sc.nextInt(); if(x > 0){ n

我试图读取用户在同一行上输入的无限数量的数字(用空格分隔),并打印0-all以上所有值的平方,而不使用for循环

例如

输入:

1234-10-15

输出:

三十

以下是我目前掌握的代码:

ArrayList<Integer> numbers = new ArrayList<Integer>();

    //insert into array if > 0
    int x = sc.nextInt();
    if(x > 0){
        numbers.add(x);
    }

    //square numbers array
    for (int i = 0; i < numbers.size(); ++i) {
        numbers.set(i, numbers.get(i) * numbers.get(i));
    }

    //sum array
    int sum = 0;
    for(int i = 0; i < numbers.size(); ++i){
        sum += numbers.get(i);
    }
    System.out.println(sum);
ArrayList number=new ArrayList();
//如果>0,则插入到数组中
int x=sc.nextInt();
如果(x>0){
增加(x);
}
//平方数数组
对于(int i=0;i
正如您所看到的,我只是扫描用户的一个输入,因为我不确定如何处理存储无限输入的问题。此外,我对我的两个方程使用for循环


谢谢

因为您要添加每个数字的平方,所以实际上不需要任何列表,只需要一个数字,您可以为从输入中读取的每个数字添加平方。比如:

int result = 0;    
Scanner scanner = new Scanner(System.in);

while(scanner.hasNextInt()){
    int num = scanner.nextInt();
    if(num > 0)
        result += num * num;
}

System.out.println(result);

您可以通过以下方式使用数组列表重构程序:

ArrayList<Integer> numbers = new ArrayList<Integer>(); 
Scanner in = new Scanner(System.in);
while(in.hasNextInt()){
   int x = in.nextInt();
    if(x > 0){
        numbers.add(x * x);
    }
}
int sum = 0;
for(int i = 0; i < numbers.size(); i++){
    sum += numbers.get(i);
}
    System.out.println(sum);
ArrayList number=new ArrayList();
扫描仪输入=新扫描仪(系统输入);
while(在.hasNextInt()中){
int x=in.nextInt();
如果(x>0){
数字。加上(x*x);
}
}
整数和=0;
对于(int i=0;i
您可以在读取行后使用
拆分
,然后执行计算:

        int result = 0;
        Scanner scanner = new Scanner(System.in);

        String a[] = scanner.nextLine().split(" ");

        for (String aa : a) {
            if (Integer.parseInt(aa) > 0) {
                result = result + Integer.parseInt(aa) * Integer.parseInt(aa);
            }
        }
System.out.println(result);
I/p:2 3 1-44-22


O/p14

正如第一个答案中所说,您不需要数组列表

但如果你坚持这样做,这里有一个解决方案:

要存储数字,请使用以下代码:

while(sc.hasNextInt()){
    int x = sc.nextInt();
    if(x > 0){
        numbers.add(x);
    }
}
通过这种方式可以避免for循环:

ArrayList<Integer> numbers = new ArrayList<Integer>(); 
Scanner in = new Scanner(System.in);
while(in.hasNextInt()){
   int x = in.nextInt();
    if(x > 0){
        numbers.add(x * x);
    }
}
int sum = 0;
for(int i = 0; i < numbers.size(); i++){
    sum += numbers.get(i);
}
    System.out.println(sum);
而不是:

for (int i = 0; i < numbers.size(); ++i) {
    numbers.set(i, numbers.get(i) * numbers.get(i));
}
for(int i=0;i
您可以使用:

List<Integer> newNumbers = numbers.stream().map(x->x*x).collect(toList());
List newNumbers=numbers.stream().map(x->x*x).collect(toList());
使用lambdas:

    ArrayList<Integer> numbers = new ArrayList<>();

    while (sc.hasNextInt()) {
        int x = sc.nextInt();
        if (x > 0) {
            numbers.add(x);
        }
    }

    int sum = numbers.stream().map(i -> i * i).reduce((xx, yy) -> xx + yy).get();
    System.out.println(sum);
ArrayList number=new ArrayList();
while(sc.hasnetint()){
int x=sc.nextInt();
如果(x>0){
增加(x);
}
}
int sum=numbers.stream().map(i->i*i).reduce((xx,yy)->xx+yy.get();
系统输出打印项数(总和);

您可以使用
拆分
然后计算。您好,谢谢您的回复。。有两件事。。。当我运行此程序并打印/存储输出时,例如I/P:5和O/P:25 50 75。。。如何打印/存储平方和,即如上所示的75?此外,如果我输入:1-1 nothing Occesshi,则会产生一个错误“lambda expression cannot redeclared other variable”和“测试的方法toList()未定义”type@Gareth您好,第一个错误是由lambda中的
x
引起的,您应该将其重命名为其他名称,例如
num->num*num
。对于
toList
错误,请使用
import static java.util.stream.Collectors.toList