如何计算添加到数组中的元素数,并找到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