[英]Array values all stay at 0.0 after user input
Basically I have code that allows the user to create an array but for some reason the values stay at 0.0基本上我有允许用户创建数组的代码,但由于某种原因,值保持在 0.0
Here is the code:这是代码:
/** * @author Brian * @version 21 Oct 2017 */ /** * Example of program execution: * Using arrays, and finding the average, max and sum. * The array with 4 elements is [4.5, 2.0, 1.2, 3.3] * The sum of [4.5, 2.0, 1.2, 3.3] is 11.00 * The Average of [4.5, 2.0, 1.2, 3.3] is 2.75 * The minimum of [4.5, 2.0, 1.2, 3.3] is 1.20 * How many numbers: 3 * Enter lower and upper range limits: 1 100 * Enter number 0: 2 * Enter number 1: 2 * Enter number 2: 2 * The sum of [0.0, 0.0, 0.0] is 0.00 * The Average of [0.0, 0.0, 0.0] is 0.00 * The minimum of [0.0, 0.0, 0.0] is 0.00 * After fill with 1.2, the array is [1.2, 1.2, 1.2, 1.2, 1.2, 1.2] */ import java.util.Scanner; public class EngArray { /** * Test the array methods * @param args the command line arguments */ public static void main(String[] args) { System.out.println("Using arrays, and finding the average, max and sum."); // a) Declare and initialise an array to hold the real data values 2.3, 4.6, 3.0 and 1.1. double[] array1 = { 4.5, 2.0, 1.2, 3.3 }; // b) Using the provided toString( ) method display the array values // Example code to test method toString( ) below, replace test array with the above array name. String array1Str = toString(array1); System.out.println("The array with 4 elements is " + array1Str); // c) Invoke calcSum and display the numbers and the sum System.out.printf("The sum of %s is %.2f ", array1Str, calcSum(array1)); // d) Invoke calcAvg and display the numbers and their average System.out.printf("\\nThe Average of %s is %.2f ", array1Str, calcAvg(array1)); // e) Invoke findMin and display the minimum System.out.printf("\\nThe minimum of %s is %.2f ", array1Str, findMin(array1)); // g) Invoke makeArray and then display the sum, average and minimum of new array double[] madeArray = makeArray(); String madeArrayStr = toString(madeArray); System.out.printf("The sum of %s is %.2f ", madeArrayStr, calcSum(madeArray)); System.out.printf(" \\nThe Average of %s is %.2f ", madeArrayStr, calcAvg(madeArray)); System.out.printf(" \\nThe minimum of %s is %.2f ", madeArrayStr, findMin(madeArray)); // h) Invoke fill to set a new array of 6 elements to 1.2 and then display modified array double[] arrayofsix = { 3.4, 5.1, 9.8, 2.2, 4.0, 7.6 }; fill(arrayofsix, 1.2); String arrayofsixStr = toString(arrayofsix); System.out.printf(" \\nAfter fill with %s, the array is %s ", "1.2", arrayofsixStr); } public static double calcSum(double[] array) { double[] array1; double sum = 0; for (int counter = 0; counter < array.length; counter++) sum += array[counter]; return sum; } public static double calcAvg(double[] array) { double Avg = 0; double sum = 0; for (int counter = 0; counter < array.length; counter++) sum += array[counter]; Avg = sum / array.length; return Avg; } public static double findMin(double[] array) { double Min = array[0]; for (int i = 1; i < array.length; i++) { if (array[i] < Min) { Min = array[i]; } } return Min; } /** * Returns a string representation of the array ie a comma separated list * of elements within [ ]. Similar to java.util.Arrays.toString(double[] a) method. * Each array element will be displayed by String.valueOf(double). * @param array the array whose string representation is required * @return a string representation of array */ public static String toString(double[] array) { String arrayStr = "["; for (int i = 0; i < array.length; i++) { if (i > 0) // Insert comma separator after first one arrayStr += ", "; arrayStr += String.valueOf(array[i]); } arrayStr += "]"; return arrayStr; } /** * Input a set of elements and store in the created array. The user specifies * the size of the array, and enters the elements. * @return the created array */ public static double[] makeArray() // Part f) { final String format = "%.2f"; Scanner input = new Scanner(System.in); System.out.print("\\nHow many numbers: "); int numNumbers = input.nextInt(); System.out.print("Enter lower and upper range limits: "); double lower = input.nextDouble(); double upper = input.nextDouble(); double[] numArray = new double[numNumbers]; for (int i = 0; i < numNumbers; i++) { double number; System.out.printf("Enter number %d: ", i); number = input.nextDouble(); while (number < lower || number > upper) { System.out.print("Please re-enter in range "); System.out.printf("[" + format + " to " + format + "]: ", lower, upper); number = input.nextDouble(); } } return numArray; } /** * initialise each element of the array to the given value. */ public static void fill(double[] array, double value) { double[] array6 = new double[6]; for (int i = 0; i < array.length; i++) array[i] = value; } }
I have a feeling that the only part of code that would affect this is here however:但是,我有一种感觉,唯一会影响这一点的代码部分在这里:
public static double[] makeArray() // Part f)
{
final String format = "%.2f";
Scanner input = new Scanner(System.in);
System.out.print("\nHow many numbers: ");
int numNumbers = input.nextInt();
System.out.print("Enter lower and upper range limits: ");
double lower = input.nextDouble();
double upper = input.nextDouble();
double[] numArray = new double[numNumbers];
for (int i = 0; i < numNumbers; i++) {
double number;
System.out.printf("Enter number %d: ", i);
number = input.nextDouble();
while (number < lower || number > upper) {
System.out.print("Please re-enter in range ");
System.out.printf("[" + format + " to " + format + "]: ", lower, upper);
number = input.nextDouble();
}
}
return numArray;
}
public static double[] makeArray() // Part f)
{
final String format = "%.2f";
Scanner input = new Scanner(System.in);
System.out.print("\nHow many numbers: ");
int numNumbers = input.nextInt();
System.out.print("Enter lower and upper range limits: ");
double lower = input.nextDouble();
double upper = input.nextDouble();
double[] numArray = new double[numNumbers];
for (int i = 0; i < numNumbers; i++) {
double number;
System.out.printf("Enter number %d: ", i);
number = input.nextDouble();
while (number < lower || number > upper) {
System.out.print("Please re-enter in range ");
System.out.printf("[" + format + " to " + format + "]: ", lower, upper);
number = input.nextDouble();
}
// YOU FORGOT TO ASSIGN THE GENERATED NUMBER TO ARRAY
numArray[i] = number;
}
return numArray;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.