【发布时间】:2023-11-11 21:30:01
【问题描述】:
下面的代码不会破坏方法或循环,而是永远循环播放音乐。当(n==maxCount) 它应该改变n=1 的值并从OnCompletionListener 出来,即,音乐应该停止播放,这就是我想要的。
我该如何解决这个问题?
protected void playsound() {
mp.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
if (n<=maxCount) {
mp.start();
n++;
if(n==maxCount){
n=1;
return;
}
}
}
});
mp.start();
maxCount 值取决于 Spinner 值,n=1 是全局声明的。
下面是它完美运行的更正代码,下面的代码有什么错误吗?因为一些用户说“使用此代码,您将面临丢失退出条件的危险,因为如果您输入时 n == maxCount,则在您 n++ 之后 n > maxCount。简而言之,它会一直运行直到您达到 maxint,然后它会崩溃” ?
protected void playsound() {
// TODO Auto-generated method stub
mp.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
if (n<=maxCount) {
mp.start();
n++;
if(n==maxCount){
n=1;
mp.pause();
mp.seekTo(0);
}
}
}
});
mp.start();
}
【问题讨论】:
-
maxcout的初始值是多少
-
maxcout 的初始值 = 2。
-
使用最新的编辑,您将面临错过退出条件的危险,因为如果您输入时
n == maxCount,那么n > maxCount在您之后n++。简而言之,它会一直运行到你点击maxint,然后它会崩溃。
标签: android loops methods media-player break