配列内のすべての重複するインデックス値を見つけて一覧表示する必要があります。
例: int[] 配列 = { 0, 7, 9, 1, 5, 8, 7, 4, 7, 3};
7 は、インデックス 1、6、および 8 の 3 つの異なる場所にあります。重複した値の場所を outputResults.setText() に表示するには、既存のコードをどのように変更すればよいでしょうか? outputResults.setText() が役立つ場合は JTextField です。
String tmp1 = getNumbers.getText();
try {
int search = Integer.parseInt(tmp1);
for (p = 0; p < array.length; p++) {
if(array[p]==search) {
b = true;
index = p;
}
}
if(b==true)
outputResults.setText(search + " was in the following fields of the array " + index);
else
throw new NumberNotFoundException("Your number was not found.");
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(getContentPane(), "You can only search for integers.");
} catch (NumberNotFoundException ex) {
JOptionPane.showMessageDialog(getContentPane(), ex.getMessage());
}
現在の状態では、重複した番号が最後に見つかった時間のみがリストされます。これは、私の例に基づいてインデックス 8 になります。配列内の数値のリストはユーザーが入力するもので、値をソートすることはできません。私の当初の推測では、ネストされたループを作成し、重複した番号が見つかったときに p (検索している現在のインデックス) を新しい配列に追加することでした。次に、完全な配列を outputResults.setText() にリストしますが、試してみるといくつかの警告とエラーが発生しました。
完全なコードは、必要に応じてここで見つけることができます: http://pastebin.com/R7rfWAv0 そして、はい、完全なプログラムは混乱していますが、仕事は完了し、私はそれでとても頭痛がしていました. また、完全なプログラムでは、教授は重複した値が余分なクレジットとして検出された場合に例外をスローするように求めました。やったのですが、元の課題を終わらせるためにコメントアウトしたので無視してください。