gpt4 book ai didi

java - 在Java中使用数组,打印数组

转载 作者:行者123 更新时间:2023-11-30 07:48:23 26 4
gpt4 key购买 nike

http://puu.sh/l3owc/e16f0fe76f.png (导师提示)

基本上,我试图通过在歌曲标题输入中输入 -1 来让用户退出循环。由于某种原因,它对我不起作用,它只是保留值 -1 作为歌曲名称。我遇到的另一个问题是,在输入每首歌曲后,我试图按照提示所示打印“所有剩余歌曲”。对我来说,当我希望它显示输入的所有歌曲(这就是我的提示的意思)时,它只是删除前一首并显示最新的歌曲标题和长度。

然后,用户可以删除歌曲,之后应该显示一份报告。我应该使用某种会不断添加的报告字符串吗?不知道该怎么做...我即将弄清楚这一点,只是需要一些帮助。非常感谢这个网站的好心人

import javax.swing.JOptionPane;

public class IT106_Playlist {

public static void main(String[] args) {

final int MAX_SONGS = 106;
int totalDuration = 0;
int numSongs = 0;
boolean exitVar = false;
int i = 0;

String[] songTitles = new String[MAX_SONGS];
int[] songLengths = new int[MAX_SONGS];

while (exitVar == false && numSongs <= songTitles.length) {

do {

songTitles[numSongs] = JOptionPane.showInputDialog(null,"Enter a song name, or type -1 to exit");
if (songTitles[numSongs].equals("")) {
JOptionPane.showMessageDialog(null,"Error: Please enter a valid song name, or type -1 to exit");
} else if (songTitles[numSongs].equals("-1")) {
exitVar = true;
}
} while (songTitles[numSongs].equals(""));



do {
try {
songLengths[numSongs] = Integer.parseInt(JOptionPane.showInputDialog(null,"Enter a song length, e.g. 4."));
if (songLengths[numSongs] > 0) {
totalDuration += songLengths[numSongs];
} else {
songLengths[numSongs] = -1;
JOptionPane.showMessageDialog(null,"Error: please enter a valid song length, e.g. 4.");
}
} catch (NumberFormatException e) {
songLengths[numSongs] = -1;
JOptionPane.showMessageDialog(null, "Error: please enter a valid song length, e.g. 4.");
}

} while (songLengths[numSongs] <= 0);



boolean addMore = true;

while ((numSongs <= MAX_SONGS) && (addMore == true)) {
JOptionPane.showMessageDialog(null, "Song #" + (i+1) + ": " + songTitles[i] + " length: " + songLengths[i] + "\n");
i++;
if (songTitles[i] == null) {
addMore = false;
}
}
numSongs++;
}
}
}

最佳答案

您只设置了 exitVar = true 但它仍然会执行您在下面编写的所有操作。如果您希望它立即停止,您必须检查 existVar 是否始终为 true,或者实际上可以使用 中止循环的进一步处理中断和标签:

    songLoop: while (numSongs <= songTitles.length) {
do {
...
} else if (songTitles[numSongs].equals("-1")) {
break songLoop;
}
...

这样,在程序点击 break SongLoop 命令后,songLoop 中的任何内容都不会被执行。

如果您不希望该行之后的 songTitles[numSongs].equals("-1") 不再出现这种情况,则必须覆盖该值或不写入它首先在那里(而不是在某个临时变量中,然后从那里进入数组)

关于java - 在Java中使用数组,打印数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33599148/

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