当前位置: 首页 > 知识库问答 >
问题:

如何接受输入来执行列表元素的求和?

何禄
2023-03-14
import java.util.ArrayList;
import java.util.List;
import java.util.*;

public class Source {
    public List<Integer> getSumOfListElements(List<Integer> first,List<Integer> second){

        List<Integer>result=new ArrayList<Integer>();
        int i;
        for(i=0;i<first.size();i++){
            result.add(first.get(i)+second.get(i));
        }
        return result;
    }

    public static void main(String[] args) {
        //CODE HERE
        Source s= new Source();
        List<Integer>a=new ArrayList();
        List<Integer>b=new ArrayList();
        Scanner sc=new Scanner(System.in);

        while (s.hasNextInt()) {
            int i = sc.nextInt();
            a.add(i);
        }

        while (sc.hasNextInt()) {
            int i = sc.nextInt();
            b.add(i);
        }

        List result1=s.getSumOfListElements(a,b);
        System.out.print(result1);
    }
}

输入

10, 20, 30, 40, 50
12, 23, 34

输出应该是这样的:

[22, 43, 64, 40, 50]

共有1个答案

马正初
2023-03-14

首先,主代码不能正确读取值,因为您提供了nextint无法读取的非int(逗号)。我建议您将用空格/逗号分隔的值写在一行上,然后拆分并解析为int

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    String[] firstValues = sc.nextLine().split("[\\s,]+"); // input: 10 , 20, 40, 30
    String[] secondValues = sc.nextLine().split("[\\s,]+");

    List<Integer> a = Stream.of(firstValues).map(Integer::parseInt).collect(Collectors.toList());
    List<Integer> b = Stream.of(secondValues).map(Integer::parseInt).collect(Collectors.toList());

    List<Integer> result1 = getSumOfListElements(a, b);
    System.out.print(result1);
}

那么您的sumoflist应该处理列表的大小,第一个列表不会总是更大(而您的实际代码导致indexoutofboundsexception),因此:

  1. 求和项目,直到结束最小列表
  2. 添加最大列表的所有缺失值
public static List<Integer> getSumOfListElements(List<Integer> first, List<Integer> second) {
    List<Integer> result = new ArrayList<>();
    int min_size = Math.min(first.size(), second.size());
    for (int i = 0; i < min_size; i++) {
        result.add(first.get(i) + second.get(i));
    }

    if (first.size() < second.size()) {
        result.addAll(second.subList(min_size, second.size()));
    } else {
        result.addAll(first.subList(min_size, first.size()));
    }

    return result;
}
Scanner sc = new Scanner(System.in);

List<Integer> a = new ArrayList<>();
for (String s : sc.nextLine().split("[\\s,]+"))
    a.add(Integer.parseInt(s));

List<Integer> b = new ArrayList<>();
for (String s : sc.nextLine().split("[\\s,]+"))
    b.add(Integer.parseInt(s));

List<Integer> result1 = getSumOfListElements(a, b);
System.out.print(result1);
 类似资料:
  • 因此,我有一个如下设置的解析器: 如果用户愿意,我需要让他们输入多个值: 但是每当我在列表中尝试多个值时,我都会得到一个EOF错误: 设置解析器来处理这样的事情的正确方法是什么?

  • 如何在Spring MVC中将输入元素绑定到数组列表元素? 视图模型: 模型属性: 控制器 然后,在jsp中,我有4个隐藏的输入,它们表示evaluatedId、evaluatorId、evoluatorName和evaluatedName的字段- 更新: 通过此更新,我收到以下错误:

  • 问题内容: 我最近在玩go,尝试制作一些服务器来响应tcp连接上的客户端。 我的问题是我该如何干净地关闭服务器并中断在以下调用中当前“被阻止”的go例程 func(* TCPListener)接受吗? 根据接受文件 Accept在侦听器接口中实现Accept方法;它等待下一个调用并返回通用Conn。 错误也很少被记录下来。 问题答案: 这是我一直在寻找的东西。也许将来会帮助某人。注意使用selec

  • 我正在做一个while循环,它将执行每1/3秒左右(为蛇游戏)。如果有输入,我希望循环能够处理扫描仪输入,如果没有用户输入,我希望循环执行一些默认任务(在最后一个输入方向移动蛇)。 我知道一个更简单的方法是创建一个带有事件处理程序的javafx程序,但是我只是想看看我是否可以在终端中为个人项目实现这种游戏。每当我在while循环中打开扫描器时,我都会将一个变量设置为默认值。如果sc.nextlin

  • 如何使用8流对列表中的每个元素Java求和? 例如,我在一个列表中有3个不同的列表,我试图对每个列表中的每个元素求和,然后创建另一个列表。我不熟悉Java 8,尝试使用流API解决一些问题: 我正在努力实现的输出:

  • 我正在尝试学习RESTfulWeb服务。我正在创建一组简单的web服务。我开始在邮局工作时被卡住了。 我想将JSON输入传递给POST方法。这是我在代码中所做的: 我在POM. xml中包含了Jackson。 MyCls是一个简单的类,包含一些getter和setter。 我从chrome的简单REST客户端调用上述POST服务。 我看到以下答复: 我尝试在REST客户端的POST请求中添加标头为