gpt4 book ai didi

java - 从数组中搜索并删除项目

转载 作者:行者123 更新时间:2023-11-30 03:12:13 25 4
gpt4 key购买 nike

有人知道为什么当搜索值与数组中存储的值匹配时它不会删除该项目吗?

String titles = "";
String lengths = "";

for (int i = 0; i < numOfSongs; i++) {
titles += songTitles[i] + " ";
lengths += songLengths[i] + " ";
}

String search = JOptionPane.showInputDialog("Enter a song title to remove it or -1 to end:");

while (!search.equals("-1")) {
for (int i = 0; i < numOfSongs; i++) {
if (search.equalsIgnoreCase(songTitles[i])) {
songTitles[i] = songTitles[i + 1];
}
}
numOfSongs--;

JOptionPane.showMessageDialog(null, "**Current Playlist**" + "\nSong titles: " + titles + "\nSong lengths: " + lengths);

search = JOptionPane.showInputDialog("Enter a song title to remove it or -1 to end:");
}

最佳答案

这段代码有很多问题:

  1. 您永远不会在 while 循环内更新 titleslengths,因此内部发生的任何事情都不会影响对话框中打印的内容
  2. 当您找到要删除的歌曲标题时,请将下一首歌曲标题复制到当前歌曲标题,但不要复制其他任何内容,因此[a, b, c, d]将在删除后b 更改为 [a, c, c, d] - 您需要将已删除元素后面的所有内容左移一个位置
  3. 当您找到要删除的歌曲标题时,您会假设第 i+1 个位置有效 - 如果您删除列表中的最后一首歌曲,则情况并非如此,否则会失败并显示 ArrayIndexOutOfBounds 异常或从当前有效的播放列表后面复制一些垃圾
  4. 您永远不会更新 songLengths 数组
  5. 使用 += 在循环中连接字符串非常无效 - 请改用 StringBuilder

关于java - 从数组中搜索并删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33394257/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com