2
私のコードには2つの問題があります。 1)arraylistに値を追加するときに私に正しい平均値を与えるわけではないので、私のforループの条件がオフで、2)arrayList内のすべての数値を表示していないことがわかります。特に0番目の整数は表示されません。ここでArrayList小数点で平均を計算する
が私のコードです:
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();'があります。しないでください、その最初のエントリを無視しないでください。あなたは値を入れますが、ArrayListに入れないでください。 –
ありがとう!私は今それを修正した。 –