【发布时间】:2016-07-18 02:57:01
【问题描述】:
我的代码有两个问题。 1)当我向我的数组列表添加值时,它没有给我正确的平均值,所以我知道我的 for 循环中的条件是关闭的,并且 2)它没有显示我的数组列表中的所有数字。它特别不显示第 0 个整数。
这是我的代码:
public class CalcAvgDropSmallest {
public static void main(String[] args) {
int lowNum = 0; // # of the lowest numbers to be dropped
double average; // calcuates the mean of the sum and the lowest numbers dropped
ArrayList<Double> inputs= getALInfo();
lowNum = getLowestnum();
average = calculateAvg(inputs, lowNum);
getAvg(inputs, lowNum, average);
}
public static ArrayList<Double> getALInfo() {
ArrayList<Double> inputs = new ArrayList<Double>();
// Read Inputs
Scanner in = new Scanner(System.in);
System.out.println("Please enter 5 - 10 integers, Q to quit: ");
Double vals = in.nextDouble();
while (in.hasNextDouble())
{
inputs.add(in.nextDouble());
}
return inputs;
}
public static int getLowestnum() {
int lowNum = 0;
// Reads Input value for # of lowest values dropped
System.out.println("How many of the lowest values should be dropped?");
Scanner in = new Scanner(System.in);
lowNum = in.nextInt();
return lowNum;
}
public static double calculateAvg(ArrayList<Double> inputs, int lowNum) {
double sum = 0;
double average = 0;
int i = 0;
// Calcuates the average of the array list with the lowest numbers dropped
for (i = 0; i < inputs.size(); i++)
{
if (inputs.get(i) > lowNum) {
sum = sum + inputs.get(i);
}
}
average = (sum / inputs.size());
return average;
}
public static void getAvg(ArrayList<Double> inputs,int n, double average) {
// It's adding all the values and dividing by the size of it, which is a problem
// Also, it's not showing the 0th integer aand just straight to the 1st integer
System.out.println("The average of the numbers " + inputs + " except the lowest " +n+ " is " +average);
}
}
【问题讨论】:
-
你正在扔掉第一个双输入!
-
这里:
Double vals = in.nextDouble();。不要那样做,不要忽略第一个条目。你输入了 vals,但从来没有把它放到你的 ArrayList 中。