如何计算添加到数组中的元素数,并找到Java中添加的元素数的平均值?

如何计算添加到数组中的元素数,并找到Java中添加的元素数的平均值?,java,arrays,Java,Arrays,如何计算数组中的元素数 因此,数组可以容纳10个元素,但并非所有元素都已填充。 如何计算输入的元素数 另外,找到数组平均值的正确方法是什么? 我现在所拥有的给了我这个 输入的有效等级数为10 [D@7ea987ac[D@7ea987acAverage:0.0 //validate strings entered by user if(convertedInput >= 0 && convertedInput <=100){ Va

如何计算数组中的元素数


因此,数组可以容纳10个元素,但并非所有元素都已填充。 如何计算输入的元素数

另外,找到数组平均值的正确方法是什么? 我现在所拥有的给了我这个

输入的有效等级数为10 [D@7ea987ac[D@7ea987acAverage:0.0

//validate strings entered by user         
     if(convertedInput >= 0 && convertedInput <=100){
      ValidArray[validArraycount] = convertedInput;
      validArraycount ++; 
     }
  }      
  catch(NumberFormatException e){
  }

     //Prints number of valid values entered
       System.out.println("The number of valid grades entered is " + vArrayLen);



     //for printing array backwards
     for (int i = (arraycount-1); i>=0; i--){
        System.out.print(ValidArray);

     } 
     //calculates sum of all values in array of ValidArray (of grades)
     for(double d : ValidArray){
        sum += d;
     }

      //avergae of valid number array 
     double average = (sum/ValidArray.length);

     System.out.println("Average: " + average);
  } 
}
多谢各位

编辑: 假设输入最多为10个字符串。可以输入任何内容。有效字符串是0-10之间的双精度数字,可以是0到10。所有无效字符串都将被丢弃。 到目前为止,我的代码是这样的:

import java.util.*;
public class Grades{
   public static void main(String args[]){

  int arraycount = 0;
  final int SIZE = 100;
  int validArrayCount = 0;
  final int ValidArraySize = 100;
  int valuesinValidArray = 0; 


  Scanner reader = new Scanner(System.in);
  String initialInput = new String ("");

  String [] sArray = new String[SIZE];
  double [] ValidArray = new double[ValidArraySize];

  double sum = 0; 

  boolean exit = false;

  System.out.println("You may enter up to 100 grades."); 
  System.out.println("When you are done entering grades, press the enter/return key.");


  //Prints to user. Stops if nothing is entered.
  while((arraycount < SIZE)&&(exit == false)){ 
     System.out.println("Enter line " + (arraycount+1) + ": "); 
     initialInput = reader.nextLine();  


     if (initialInput.length()<1){ 
        exit = true; 
     }
     else{
        sArray[arraycount]=initialInput; 
        arraycount++;
     }
  }

     //convert string to double 
  try{
     double convertedInput = Double.parseDouble(initialInput);

     //validate strings entered by user         
     if(convertedInput >= 0 && convertedInput <=100){
        ValidArray[validArrayCount] = convertedInput;
        validArrayCount ++;
     }
  }
  catch(NumberFormatException e){
  }
     //Prints number of valid values entered
       System.out.println("The number of valid grades entered is " + vArrayLen);



     //for printing array backwards
     for (int i = (ValidArraySize-1); i>=0; i--){
        System.out.println(ValidArray[i] + "");
     } 

     //calculates sum of all values in array of ValidArray (of grades)
     for(double d : ValidArray){
        sum += d;
     }

      //avergae of valid number array 
     double average = (sum/validArrayCount);

     System.out.println("Average: " + average); 
  } 
}

您已经在这样做了,而且ValidArray是一个糟糕的名称。您忘记在for循环中使用数组索引,而用于该循环的数字是validArraycount-

validArrayCount已保存输入的元素数

打印validArrayCount,而不是为输入的有效等级数打印vArrayLen:

要获得平均值,可以除以ValidArray Count而不是ValidArray.length:

此外,在向后打印阵列时,还必须添加阵列索引:

// for printing array backwards
for (int i = validArrayCount-1; i>=0; i--){
    System.out.print(ValidArray[i] + " ");
}
System.out.println(); //For inserting a new line after printing all array elements

因此,数组可以容纳10个元素,但并非所有元素都已填充。我如何计算输入的元素数?定义一个变量并自己跟踪计数。实际上,看起来已经有一个变量可以容纳计数。使用它。这几乎是唯一的方法,除非使用。Java数组不是动态的;一旦初始化它们它们它们有一个固定的长度。你能使用像ArrayList这样的集合吗?另外,你确定你已经包含了所有的要求吗?看起来你正在做很多其他的事情?一个双[]默认情况下,每个条目都将初始化为零。我不能使用ArrayList。索引不会只打印该数字。我不想这样做。我想按输入的相反顺序打印整个数组。@Karawillam这是一个循环。它将打印从末尾开始的每个数字和一个空格。在我要编辑的循环之后应该有一个println它。最后,我建议您试试。@KaraWilliam那么您的数组是空的。但这不应该是因为我输入了有效的字符串。您也可以使用Arrays.toStringValidArray从左到右以字符串的形式获取数组内容;但是如果上面的内容没有从右到左打印,那么数组是空的。您确定convertedInput符合测试条件吗伊特里亚?
System.out.println("The number of valid grades entered is " + validArrayCount);
double average = (sum/validArrayCount);
// for printing array backwards
for (int i = validArrayCount-1; i>=0; i--){
    System.out.print(ValidArray[i] + " ");
}
System.out.println(); //For inserting a new line after printing all array elements