配列に単語 (オブジェクト) のリストがあります。各単語には、数字、単語、ヒントがあります。(番号が配列内のインデックスよりも 1 大きくならないようにしてください) ユーザーが配列内の項目を削除できるようにしたいです。ユーザー入力 (int) の単語を読み取るメソッドを作成しました。入力のインデックスのヒントは、次の配列のヒントと単語の値を取得し、次の配列のヒントと単語を取得します。それなど。メソッドを作成しましたが、単語を削除するたびに、tat の後の単語は、配列内の最後のオブジェクトの単語とヒントを取得します
例:最初はこんな感じ
1 dog bark
2 cat meow
3 cow moo
4 chicken cluck
5 pig oink
ユーザーが 3 で単語を削除した後
1 dog bark
2 cat meow
3 pig oink
4 pig oink
誰が問題が何であるか教えてもらえますか?
コード
public void deleteWord() throws IOException {
if (wCount > 0) {
int again = JOptionPane.YES_OPTION;
while (again == JOptionPane.YES_OPTION) {
int num = Integer.parseInt(JOptionPane.showInputDialog(null, "Enter the number of the word you wish to delete", "Enter word number", JOptionPane.PLAIN_MESSAGE))-1;
int cnfrm = JOptionPane.showConfirmDialog(null, "Are you sure you wish to delete the word:" + "\n" + "\t" + wArr[num].getWrd(), "Are you sure?", JOptionPane.YES_NO_OPTION);
if (cnfrm == JOptionPane.YES_OPTION) {
for (int i = num; i < (wCount - 1); i++) {
for (int j = (i + 1); j < wCount; j++) {
wArr[i].setWrd(wArr[j].getWrd());
wArr[i].setHnt(wArr[j].getHnt());
}
}
wCount--;
wArr[wCount] = null;
}
PrintWriter pw = new PrintWriter(new FileWriter("words.txt", false));
for (int x = 0; x < wCount; x++) {
pw.println(wArr[x].toString(1));
}
pw.close();
displayWords();
again = JOptionPane.showConfirmDialog(null, "Do you wish to delete another word?", "Delete another wod?", JOptionPane.YES_NO_OPTION);
}
} else {
JOptionPane.showMessageDialog(null, "Thre are no words to delete", "ERROR", JOptionPane.ERROR_MESSAGE);
}
}
編集:
これは宿題です。つまり、明らかに、プログラミングについての割り当てをまだ知らないということです。ArrayList
秒。それらについては後で調べますが、残念ながらこのプロジェクト (ご参考までにハングマン) は月曜日に予定されているため、このプログラムでは実装しません。