Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.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,我的数字被四舍五入打印出来_Java_Arraylist - Fatal编程技术网

Java,我的数字被四舍五入打印出来

Java,我的数字被四舍五入打印出来,java,arraylist,Java,Arraylist,我的setAverage方法是获取一个数字列表来汇总它们。如果我给出一个ArrayList,比如说200200,结果是600。但是如果我给它200200250,coutome是一样的。我不明白。 另外:我现在不想得到平均值,我只想对数组求和 import java.util.ArrayList; 公共类计算{ 私人ArrayList x; 私人INTZ; 公共无效集合平均值(ArrayList myList){ x=myList; for(int i:myList){ z+=i; 打破 }

我的
setAverage
方法是获取一个数字列表来汇总它们。如果我给出一个
ArrayList
,比如说
200200
,结果是
600
。但是如果我给它200200250,coutome是一样的。我不明白。 另外:我现在不想得到平均值,我只想对数组求和

import java.util.ArrayList;
公共类计算{
私人ArrayList x;
私人INTZ;
公共无效集合平均值(ArrayList myList){
x=myList;
for(int i:myList){
z+=i;
打破
}                               
}
公共整数getAverage(){
返回z;
}   
}
导入java.util.ArrayList;
导入java.util.Scanner;
公共舱{
公共静态void main(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
calculation rechneAVG=新计算();
ArrayList myList=新的ArrayList();
while(scan.hasNextInt()){
添加(scan.nextInt());
rechneAVG.setAverage(myList);
}
System.out.println(rechneAVG.getAverage());
}
}

通常,您不希望在foreach样式的循环中使用break语句,break将终止循环,而这正是导致您出现问题的原因


另外,我不太喜欢将x设置为输入列表的值。您是否可以重新构造函数以返回添加到列表中的值?不是你问题的一部分,更多的是旁白。

假设你以前做过类似的事情

ArrayList list=Arrays.asList(新的int[]{200250});
计算计算=新计算();
计算平均值(列表);
然后你应该像这样重写你的类:

import java.util.ArrayList;
公共类计算{
私有数组列表;
私人国际平均值;
公共无效集合平均值(ArrayList myList){
intList=myList;
平均值=0;
for(int i:myList){
平均值+=i;
}                               
}
公共整数getAverage(){
返回平均值;
}   
}
也就是说:初始化
z
(我将其重命名为
avg
)并放弃
中断


另外,永远不要使用break。我正在努力阻止程序员使用break/continue,但他们告诉我我疯了。

你只得到第一个元素,不计算平均值。显示一个。至少,
break
是错误的,但是很难看出这与你的问题有什么关系,因为你不会得到600。for循环内部的break使得for循环总是在一次迭代后结束。按照顺序,for中的代码只执行一次。此外,z在添加值之前需要初始化
x.stream().mapToInt(i->i).average().orelsetrow()