2016-04-05 5 views
1

Ich bin verwirrt, wie man auf die Array-Temperatur zugreifen, um das aktuelle Array-Element temp [i] zu max Umsatz zu vergleichen, die 0 ist, um zu bestimmen, welche größer ist, jedes Mal wenn ich es versuche kann ich nicht Zugang Temperatur in Schritt 8 und STEP 7, ich will nicht die Sichtbarkeit der Klassen ändernZugriff auf Array in der privaten Klasse

public class Sales { 
    public static void main(String[] args) { 
     int[] sales; 

     sales = getSales(); 
     printSales(sales); 
     printSummary(sales); 
    } 

    private static int[] getSales() { 
     Scanner input = new Scanner(System.in); 
     int[] temp; 

     System.out.print("Enter the number of salespeople: "); 
     temp = new int[input.nextInt()]; // Step 1 

     for (int i = 0; i < temp.length; i++) // Step 2 
     { 
      System.out.print("Enter sales for salesperson " + (i + 1) + ": "); 
      temp[i] = input.nextInt(); // Step 3 
     } 
     return temp; // Step 4 
    } 

    private static void printSales(int[] s) { 
     System.out.println(); 
     System.out.println("Salesperson Sales"); 
     System.out.println("----------- -----"); 
     for (int i = 0; i < 5; i++) // Step 5 
     { 
      System.out.printf("%6d%12d\n", i + 1, s[i]); // Step 6 
     } 
    } 

    private static void printSummary(int[] s) { 
     int sum = 0; 
     int max_sale = 0; // Salesperson with the most sales 
     int min_sale = 0; // Salesperson with the least sales 

     for (int i = 0; i < ________; i++) // Step 7 
     { 
      ____________ // Step 8 

     } 
     System.out.println(); 
     System.out.println("Total sales: " + sum); 
     System.out.println("Average sales: " + (double) sum/s.length); 
     System.out.println("Salesperson " + (max_sale + 1) + " had the maximum sale with " + s[max_sale]); 
     System.out.println("Salesperson " + (min_sale + 1) + " had the minimum sale with " + s[min_sale]); 
    } 
} 
+0

Welche Fehler @ Andrew haben Sie bekommen, ist es Laufzeit- oder Build-Zeit, und was sind Sie bereit zu ändern? – nicomp

+0

Sie müssen genauer sein. 'Ich kann nicht auf Temp zugreifen 'ist extrem vage und hilft uns nicht, wenn wir versuchen, Ihre Frage zu beantworten. – tnw

+0

Welchen Temperaturbereich sprechen Sie? Ich denke, so wie du es machst, sieht es gut aus. Kannst du klarer sein? –

Antwort

3

temp ist eine lokale Variable, die in der main und übergeben Sie Ihre printSummary(int[] s) Methode erstellt worden, so dort aus kann man Greifen Sie darauf zu, indem Sie s verwenden.

for (int i = 0; i < s.length; i++) { // STEP 7 
    if (s[i] > max_sale) max_sale = s[i]; // STEP 8 
    if (s[i] < min_sale) min_sale = s[i]; 
    sum += s[i]; 
} 
+0

Es aktualisiert, sondern auch Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1535 \t bei Sales.printSummary (Sales.java:61) \t bei Sales.main (Sales.java : 11) irgendeine Idee warum? – Beeeee

+0

@Brent, diese Aussage kann keine Ausnahme werfen, ich garantiere es – Andrew

+0

@Brent, verwenden Sie 'max_sale' anstelle von' s [max_sale] ' – Andrew

2

Nahm Andrew Tobilko Code und verändert es den Index an die Person zu speichern, die höchsten Verkaufswert hat. Die Implementierung dieser Schleife wird funktionieren.

for (int i = 0; i < s.length; i++) { // STEP 7 
    if (s[i] > s[max_sale]) max_sale = i; // STEP 8 
    if (s[i] < s[min_sale]) min_sale = i; 
    sum += s[i]; 
} 
0

Dies funktioniert bei Schritt 7/8 dank

int max = 0; 
int min = Integer.MAX_VALUE; 

for (int i= 0; i < s.length; i++) { 
sum += s[i]; 
if (s[i] > max) { 
max_sale = i; 
max = s[i]; 
} 
if (s[i] < min) { 
min_sale = i; 
min = s[i]; 
} 
}