2016-05-19 5 views
0

私はこの方法を持っています(下記参照)。 arrayに格納されている入力ファイルを検索して、ユーザーがJTextFieldに名前として入力したものと一致する部分文字列(大文字小文字を区別しない)を含む名前のすべての名前を検索するとします。このメソッドはこれを行います。しかし、名前を印刷するときには、それをbestDecade(1920年のように)と一緒に印刷することも考えられます。私は十年の年のget ...私のJTextFieldに私のgetRankを表示

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

を持っているので、ランク[0] 1900年とランクを表し、[1] 1910年の名前の最高ランク番号を取得します

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

を表ししかし、私は階数を表示するのではなく、階数を表示する方法を理解しているように思えます。あなたは私が試してきたことを以下に見ることができますが、働いていません。だから誰も私はランクを表示する方法を知っている?主な問題としてこれを取る

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); 
     } 
    } 
} 

答えて

1

私は、この情報

とランク十年ではなく、ランク数

を表示する方法を見つけ出すように見えることはできません

rank [0]は1900を表し、rank [1]は1910を表します。

そして、あなたはrank[best]を返していますが、後で戻り値getRank(best)を使用しているので、あなたの関数が数値190、1910などを返すことを知って、あなたはiを返す、またはgetRank機能を消去し、返された値を使用する必要があります。

// 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); 

はオプション2:あなたのコードの残りの部分は

オプション1作品と仮定すると、

// 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この男はどこにでもあります。ちょうどそれを編集しました。 – UDKOX

+0

ありがとうございます。上院議員。 –

関連する問題