2017-10-21 11 views
-1

Fondamentalement, j'ai le code qui permet à l'utilisateur de créer un tableau, mais pour une raison quelconque les valeurs restent à 0,0valeurs Array tous rester à 0,0 après l'entrée utilisateur

Voici le 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 i.e. 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; 
 
    } 
 
}

J'ai le sentiment que la seule partie du code qui aurait une incidence sur c'est ici cependant:

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; 


} 
+0

Eh bien, est-il partout dans cette méthode où vous initialisez les éléments de tabNums, à savoir que tabNums [someIndex] = someValue? Je n'en vois pas. –

+0

Les déclarations contenues dans votre question tels que: « Je l'ai cherché partout ... » et « désolé si cela est trop long ... » fournir aucune information utile qui aide tout le monde à comprendre votre code, votre problème ou votre question. À l'avenir, au lieu de ces informations inutiles, mettre plus d'effort pour expliquer votre code et votre problème ainsi que l'affichage moins de code qui ne sont pas pertinentes à votre problème ou nécessaire pour permettre le code pour compiler et exécuter. –

Répondre

-1
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; 


} 
+0

Les réponses de vidage de code sont des réponses de mauvaise qualité et ne sont pas utiles pour les futurs visiteurs. Au lieu de se concentrer sur l'affichage d'une explication décente. –