2013-03-07 2 views
0

Je suis un Newb complet avec Java et j'ai un très curieux problème qui se passe dans mon code. L'objet consiste à créer une liste de 20 nombres aléatoires dans un tableau, à afficher ce tableau et à effectuer une série de calculs basés sur les données du tableau. Cela doit être accompli en 6 méthodes. Tout semble bien fonctionner sauf pour la dernière méthode. Il est destiné à saisir le nombre le plus bas dans le tableau, mais pour une raison quelconque, il sort seulement un 0. Ce qui est étrange est que cela fonctionne parfaitement bien pour la méthode ci-dessus, qui regroupe le nombre le plus élevé dans le tableau.java low value ouput 0

J'ai essayé de dépanner et de voir si c'était le cas d'un tableau avec des valeurs nulles, mais ce n'est pas probable que la méthode la plus élevée semble fonctionner correctement. La liste la plus basse est près du fond.

Merci de votre aide, il est très apprécié pour ce greenhorn. Aussi, si vous avez d'autres commentaires qui seraient géniaux, je suis ouvert à la critique!

import java.util.Random; 

public class Program7 { 

    public static void main(String[] args) { 

     final int listSize = 20; // List size 
     double total = 0;   // Total 
     int[] ranList = new int[listSize]; // Array with random numbers 
     int highest = ranList[0]; // Highest variable 
     int lowest = ranList[0]; // Lowest Variable 

     randomNumberList(ranList);   // Calls randomNumberList method 
     displayList(ranList);    // Calls displayList method 
     total = totalList(total, ranList); // Calls totalList method 
     double averageList = listAverage(total, ranList); // Calls averageList method 
     highest = listHighest(ranList, highest); // Calls listHighest method 
     lowest = lowestList(ranList, lowest); // Calls lowestList method 

     // On screen output 
     System.out.println("\nHere's the total: " + total); 
     System.out.println("Here's the average: " + averageList); 
     System.out.println("Here's the highest number in the list: " + highest); 
     System.out.println("Here's the lowest number in the list: " + lowest); 

    } 

    /** 
    * Generates a random list 
    * 
    * @param ranList 
    */ 
    public static void randomNumberList(int[] ranList) { 
     for (int i = 0; i < ranList.length; i++) { 
      Random generator = new Random(); 
      int ranNum = generator.nextInt(100) + 1; 
      ranList[i] = ranNum; 
     } 
    } 

    /** 
    * Displays list 
    * 
    * @param ranList 
    */ 
    public static void displayList(int[] ranList) { 
     System.out.println("Here is your random list: "); 
     for (int i = 0; i < ranList.length; i++) { 
      System.out.print(ranList[i] + " "); 
     } 
    } 

    /** 
    * Adds elements in list 
    * 
    * @param total 
    * @param ranList 
    * @return returns total of list added together 
    */ 
    public static double totalList(double total, int[] ranList) { 
     for (int i = 0; i < ranList.length; i++) { 
      total += ranList[i]; 
     } 
     return total; 
    } 

    /** 
    * Finds average by dividing the total with the ranList.length 
    * 
    * @param total 
    * @param ranList 
    * @return result of the averaging 
    */ 
    public static double listAverage(double total, int[] ranList) { 
     double averageList = total/ranList.length; 
     return averageList; 
    } 

    /** 
    * Steps through array via loop and finds highest value 
    * 
    * @param ranList 
    * @param highest 
    * @return the highest value 
    */ 
    public static int listHighest(int[] ranList, int highest) { 
     for (int i = 0; i < ranList.length; i++) { 
      if (ranList[i] > highest) { 
       highest = ranList[i]; 
      } 
     } 
     return highest; 
    } 

    /** 
    * Steps through array via loop and finds lowest value 
    * 
    * @param ranList 
    * @param lowest 
    * @return the lowest value 
    */ 
    public static int lowestList(int[] ranList, int lowest) { 
     for (int i = 0; i < ranList.length; i++) { 
      if (ranList[i] < lowest) { 
       lowest = ranList[i]; 
      } 
     } 
     return lowest; 
    } 
} 

Répondre

0

Vous devez initialiser le plus haut et le plus bas après avoir créé les tableaux aléatoires. Ils commencent tous les deux par 0.

1

Vous définissez la valeur la plus basse sur 0 avant de la transmettre à la méthode.

int[] ranList = new int[listSize]; // Array with random numbers (not yet, right now this is an array of all 0) 
int highest = ranList[0]; // Highest variable (not really, this is 0) 
int lowest = ranList[0]; // Since you didn't put anything in ranList, lowest is now 0 

Pour votre plus haute fonction, cela fonctionne très bien parce que vos nombres aléatoires sont toujours supérieurs à 0.

Vraiment, la cause est que vous ne devriez pas être de passage quoi que ce soit dans ces méthodes tout, parce qu'ils ne font rien.

public static int lowestList(int[] ranList) { 
    int lowest = Integer.MAX_VALUE; 
    for (int i = 0; i < ranList.length; i++){ 
     if (ranList[i] < lowest){ 
      lowest = ranList[i]; 
     } 
    } 
    return lowest; 
} 
+0

Cette solution a secoué mes chaussettes, je vous remercie! – JavaTheMutt

0

essayer de mettre

lowest = ranList[0]; 

après que vous générez votre liste i.e. après que vous appelez

randomNumberList(ranList);