列表基本上需要从(例如)324到35264,其中5是3和2的和,6是2和4的和。列表中的数字是手动键入的,并且列表可以具有无限大小。
我想我已经有了基数(如果你可以这么称呼它的话),但是我不确定我如何精确地对列表中的特定数字求和。
import java.util.LinkedList;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
List<Integer> list = new LinkedList<Integer>();
int number;
while (true){
number = sc.nextInt();
if(number==0)break;
if(list.size()==0)
list.add(number);
else{
// here's where I think the sum of numbers should be
}
list.add(i,number);
}
}
System.out.println("result:");
for (int n : list) {
System.out.print(n + " ");
}
sc.close();
}
}
2条答案
按热度按时间qxsslcnc1#
我不知道您正在使用的
i
是什么(我没有看到它在任何地方声明),但您不需要它。循环的行为如下所示:
编辑:我看到你想要每对连续输入数字的总和。
0lvr5msh2#
一个更通用的方法是,按照the first principle of SOLID的建议,将用户的输入和处理列表的职责分开,这样就可以重用逻辑,而不管列表来自何处。
创建新列表
解决这个问题的方法之一是生成一个新的List,并在迭代原始列表的同时用原始列表中的元素及其总和填充它。
看起来可能是这样的:
第一个月
ListIterator
-修改原始列表如果您的目标是修改原始列表,则可以使用
ListIterator
提供的功能。关于迭代器,要记住的关键一点是,它们总是占据元素之间的位置***(* 或者在第一个元素之前,或者在最后一个元素之后 *)。并且正在调用方法
ListIterator.add()
,一个新元素被插入到 previous 之后(可以通过previous()
调用 * 检索的 *)和 next 元素(可以通过调用next()
* 获得的 *)。main()