Java-将多个用户输入添加到arraylist中
我试图读取用户在同一行上输入的无限数量的数字(用空格分隔),并打印0-all以上所有值的平方,而不使用for循环 例如 输入: 1234-10-15 输出: 三十 以下是我目前掌握的代码: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
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代码>。