2016-05-19 12 views
0

So habe ich diese Methode (siehe unten). Es wird eine Eingabedatei durchsucht, die im Array gespeichert wurde, um alle Namen für alle zu finden, die eine übereinstimmende Teilzeichenfolge (nicht zwischen Groß- und Kleinschreibung) enthalten, die der Benutzer als Name in JTextField eingegeben hat. Diese Methode führt dies aus. Wenn es jedoch den Namen druckt, soll es auch seine beste Dekade (wie 1920) damit drucken. Ich habe ein ...Anzeige meines getRank in meinem JTextField

public int getRank(int decade) { 
    int decadeRank = rank[decade]; 
    return decadeRank; 
} 

, die erhalten ist das Jahrzehnt Jahr, so rank [0] steht für 1900 und Rang [1] repräsentiert 1910.

public int bestDecade() { 
    int best = rank[0]; 
    for(int i = 0; i < DECADES; i++) 
     if(rank[i] > best) 
      best = rank[i]; 
    return best; 
} 

, die die beste Rangnummer für einen Namen bekommt bestimmte Dekade so wie 351. Jedoch kann ich nicht herausfinden, wie man die Rangdekade und nicht die Rangnummer anzeigt. Sie können unten sehen, was ich versucht habe, aber nicht funktioniert. Weiß jemand, wie ich den Rang erreichen kann?

private void match(String targetSubstring) 
{ 
    displayArea.setText(""); 
    displayArea.append("FIND RESULTS for: " + targetSubstring); 
    displayArea.append("\n"); 
    displayArea.append("\n Name    Best Decade"); 
    displayArea.append("\n---------------   ---------------"); 
    targetSubstring = targetSubstring.toUpperCase(); 
    for (int i = 0; i < namesArray.length; i++) { 
     String theName = namesArray[i].getName(); 
     if (theName.toUpperCase().contains(targetSubstring)) 
     { 
      int best = namesArray[i].bestDecade(); //this is what I've been trying 
      displayArea.append("\n" + namesArray[i].getName() + (namesArray[i].getRank(best))); 
      // displayArea.append(best); 
     } 
    } 
} 

Antwort

1

dies als das Hauptproblem Taking:

Ich kann nicht scheinen, um herauszufinden, wie der Rang zehn Jahre angezeigt werden und nicht den Rang Nummer

Und mit diesen Informationen

Rang [0] repräsentiert 1900 und Rang [1] repräsentiert 1910

Und zu wissen, dass Ihre Funktion die Zahlen 190, kehrt 1910 usw. Da Sie rank[best] zurück, aber später den Rückgabewert getRank(best) verwenden, sollten Sie i zurückzukehren, oder löschen Sie die getRank Funktion und verwenden Sie den zurückgegebenen Wert.

den Rest des Codes Unter der Annahme arbeitet

Option 1:

// Your code, no changes 
public int bestDecade() { 
    int best = rank[0]; 
    for(int i = 0; i < DECADES; i++) 
     if(rank[i] > best) 
      best = rank[i]; 
    return best; // Returns 1900, 1910 etc.. 
} 

// Changes here to show the returned value (1900, 1910 etc.) directly 
int best = namesArray[i].bestDecade(); //this is what I've been trying 
displayArea.append("\n" + namesArray[i].getName() + best); 

Option 2:

// Changes here to return "i" 
public int bestDecade() { 
    int best = 0; 
    for(int i = 0; i < DECADES; i++) 
     if(rank[i] > rank[best]) 
      best = i; 
    return best; // Returns values between [0 .. DECADES) 
} 

// No changes here, use returned value, [0 .. DECADES) in 
int best = namesArray[i].bestDecade(); // You have "i" here, the index of rank 
displayArea.append("\n" + namesArray[i].getName() + namesArray[i].getRank(best)); // Use "i" here, rank[i] 
+0

LOL dieser Kerl ist überall. Habe es gerade bearbeitet. – UDKOX

+0

Vielen Dank. Gewählt –