2016-11-24 5 views
0

Zunächst tut mir leid, wenn es im Titel dieser Frage einen Fehler gibt. Ich weiß einfach nicht, wie ich das in eine Frage stellen soll. Der folgende Code würfelt tausendmal und zeigt an, wie oft eine Zahl auf den Würfeln geworfen wird. Ich möchte den Index der größten Zahl nicht das Element drucken.Drucken des Index eines Array-Elements nach dem Auswählen des größten Elements

import java.util.Random; 

public class apples { 
public static void main(String args[]){ 
    Random rand = new Random(); 
    int a[] = new int[7]; 

    for(int i = 1; i<1001; i++){ 
     ++a[rand.nextInt(6) + 1]; 
    } 
    System.out.println("Roll\tTimes"); 

    for(int j=1; j<a.length; j++){ 
     System.out.println(j + "\t\t" + a[j]); 
    } 
    int max = a[0]; 
    for (int i : a) { 
     if (max < i) { 
      max = i; 

     } 
    } 
    System.out.println("The winning number is " + max); 

} 

} 

EDIT:

Ich dachte, wie der Index zu bekommen, aber ist es ein einfacher Weg, es zu tun?

import java.util.Random; 

public class apples { 
public static void main(String args[]){ 
    Random rand = new Random(); 
    int a[] = new int[7]; 
    int winner = 0; 

    for(int i = 1; i<1001; i++){ 
     ++a[rand.nextInt(6) + 1]; 
    } 
    System.out.println("Roll\tTimes"); 

    for(int j=1; j<a.length; j++){ 
     System.out.println(j + "\t\t" + a[j]); 
    } 
    int max = a[0]; 
    for (int i : a) { 
     if (max < i) { 
      max = i; 

     } 
    } 
    for(int j=0; j<a.length; j++){ 
     if(max==a[j]){ 
      winner = j; 
     } 
    } 
    System.out.println("The winning number is " + winner); 

} 

} 
+0

als foreach zu einer normalen for-Schleife neu schreiben. Anstatt den Wert des Arrays an einem gegebenen Punkt im Maximum zu speichern, speichern Sie den Index dort und vergleichen Sie ihn mit dem Wert im Index, in dem sich Ihr aktuelles Maximalwert befindet, anstatt mit der Zahl zu vergleichen. – SomeJavaGuy

+0

Ich habe eine andere Schleife mit einer if-Anweisung geöffnet, um zu prüfen, ob der Wert von max einem Array-Element entspricht und dann den Index einer anderen Variablen zugewiesen und dann ausgedruckt hat. Aber gibt es noch eine andere Möglichkeit? –

+0

Mögliches Duplikat von [Wie kann ich den Index eines Maximalwertes in einem Array finden und drucken?] (Http://stackoverflow.com/questions/8991103/how-can-i-locate-and-print-the-index -of-a-max-Wert-in-einem-Array) –

Antwort

0

Sie werden nicht in der Lage sein, den Index des Arrays zu erhalten (direkt), wenn Sie foreach-Schleife verwenden (wie, wie Sie getan haben), sondern Sie normale for Schleife verwenden müssen, wie bei in dem unten stehenden Code gezeigt Kommentare:

int max = a[0]; 
int maxIndex = 0;//take a variable & Initialize to 0th index 
for (int i=0; i<a.length;i++) {//normal for loop, not for each 
    if (max < a[i]) { 
     max = a[i]; 
     maxIndex = i;//capture the maxIndex 
    } 
} 
System.out.println(": maxIndex :"+maxIndex);//print the maxIndex 
+0

Danke. Ich bin verwirrt, dass, wenn ich das mache, was du gesagt hast, ich immer den Index als 6 bekommen werde. –

+0

nein, es gibt wenn Bedingung, also wird maxIndex nur dann dem Wert zugewiesen, wenn es einen größeren Wert gibt – developer

0

Sie haben Ihre foreach zu indiziert for Schleife zu ändern und eine Spur des Index der größten Zahl zu halten.

Ändern Sie diesen Teil zu

int max = a[0]; 
    for (int i : a) { 
     if (max < i) { 
     max = i; 

    } 
} 

ändern es mit

int max = a[0]; 
    int index = 0; 
    for (int j = 0, aLength = a.length; j < aLength; j++) { 
     int i = a[j]; 
     if (max < i) { 
      max = i; 
      index = j; 
     } 
    } 
    System.out.println("The winning number is " + max); 
    System.out.println("The winning index is " + index); 

Dieser druckt die lasrgest Nummer, in der sie rollen erreicht.

Verwandte Themen