Java 如何在双数组中查找非零数?
如果我有这样的双数组:Java 如何在双数组中查找非零数?,java,android,Java,Android,如果我有这样的双数组: [0.0,12.0.0,0.0,0.0,0.0,6.0,5.0,0.0] 而我想计算的平均值只有不到0.0的数字,为什么这个代码不能很好的工作呢 public static double Average(double[] myarray) throws IllegalArgumentException { double dValue = 0.0; int counter=1; if (myarray== null) {
[0.0,12.0.0,0.0,0.0,0.0,6.0,5.0,0.0]
而我想计算的平均值只有不到0.0的数字,为什么这个代码不能很好的工作呢
public static double Average(double[] myarray) throws IllegalArgumentException {
double dValue = 0.0;
int counter=1;
if (myarray== null) {
throw new IllegalArgumentException("The array must be defined or diferent to null");
}
if (myarray.length == 0) {
throw new IllegalArgumentException("The array must have size greater than zero");
}
for(int i = 0 ; i < myarray.length ; i++) {
if(myarray[i] > 0.0){
counter++;
dValue += myarray[i]/counter;
}
}
return dValue;
}
publicstaticdouble-Average(double[]myarray)抛出IllegalArgumentException{
双D值=0.0;
int计数器=1;
if(myarray==null){
抛出新的IllegalArgumentException(“数组必须定义或与null不同”);
}
如果(myarray.length==0){
抛出新的IllegalArgumentException(“数组的大小必须大于零”);
}
for(int i=0;i0.0){
计数器++;
dValue+=myarray[i]/计数器;
}
}
返回数据值;
}
除以循环后的计数器
,而不是循环中的计数器
实际上,您必须始终除以最终计数器值减去1(而不是递增值),这在循环期间是不可能的。除以
计数器在循环之后,而不是在循环中
实际上,您必须始终除以最终计数器值减去1(不是递增值)这在循环过程中是不可能的。原因是计数器在循环过程中递增,所以平均值总是错误的,因为每个数字没有在同一个计数器上被除。原因是计数器在循环过程中递增,所以平均值总是错误的,因为每个数字没有在同一个计数器上被除相同的计数器因为您使用了该行
dValue += myarray[i]/counter;
你应该让自己循环
for(int i = 0 ; i < myarray.length ; i++) {
if(myarray[i] > 0.0){
counter++;
dValue += myarray[i];
}
}
dValue = dValue / counter;
这一点非常重要,因为例如,当数组有1个元素时,您将返回该元素的值除以2,而不是除以1,因为您需要使用这一行
dValue += myarray[i]/counter;
你应该让自己循环
for(int i = 0 ; i < myarray.length ; i++) {
if(myarray[i] > 0.0){
counter++;
dValue += myarray[i];
}
}
dValue = dValue / counter;
这一点非常重要,因为例如,当您的数组有1个元素时,您将返回该元素的值除以2,而不是除以1。在每次迭代中,您将使用计数器进行除法,这不会给出平均值。一旦你得到了总数,你需要用最后的计数器数除以
只要这样做:
public static double Average(double[] myarray) throws IllegalArgumentException {
double dValue = 0.0;
int counter=1;
if (myarray== null) {
throw new IllegalArgumentException("The array must be defined or diferent to null");
}
if (myarray.length == 0) {
throw new IllegalArgumentException("The array must have size greater than zero");
}
for(int i = 0 ; i < myarray.length ; i++) {
if(myarray[i] > 0.0){
counter++;
dValue += myarray[i];
}
}
return dValue/counter;
}
publicstaticdouble-Average(double[]myarray)抛出IllegalArgumentException{
双D值=0.0;
int计数器=1;
if(myarray==null){
抛出新的IllegalArgumentException(“数组必须定义或与null不同”);
}
如果(myarray.length==0){
抛出新的IllegalArgumentException(“数组的大小必须大于零”);
}
for(int i=0;i0.0){
计数器++;
dValue+=myarray[i];
}
}
返回数据值/计数器;
}
您在每次迭代中都使用计数器进行除法,这不会给出平均值。一旦你得到了总数,你需要用最后的计数器数除以
只要这样做:
public static double Average(double[] myarray) throws IllegalArgumentException {
double dValue = 0.0;
int counter=1;
if (myarray== null) {
throw new IllegalArgumentException("The array must be defined or diferent to null");
}
if (myarray.length == 0) {
throw new IllegalArgumentException("The array must have size greater than zero");
}
for(int i = 0 ; i < myarray.length ; i++) {
if(myarray[i] > 0.0){
counter++;
dValue += myarray[i];
}
}
return dValue/counter;
}
publicstaticdouble-Average(double[]myarray)抛出IllegalArgumentException{
双D值=0.0;
int计数器=1;
if(myarray==null){
抛出新的IllegalArgumentException(“数组必须定义或与null不同”);
}
如果(myarray.length==0){
抛出新的IllegalArgumentException(“数组的大小必须大于零”);
}
for(int i=0;i0.0){
计数器++;
dValue+=myarray[i];
}
}
返回数据值/计数器;
}
你的意思是“如果”循环之外吗?@doctor
循环的是指谁,如果没有定义循环,你的意思是“如果”循环之外吗?@doctor
循环的是指谁,如果没有定义循环