Java 为什么我的if语句在这个for循环中不起作用? 问题:

Java 为什么我的if语句在这个for循环中不起作用? 问题:,java,android,audio,android-mediaplayer,runnable,Java,Android,Audio,Android Mediaplayer,Runnable,我正在设计一个小的Android应用程序,当你按下一个看起来像特定乐器的imageButton时,它可以播放声音(音符),你可以在6个imageButton上播放多达10个音符。它将注释编号存储在数组中,并将元素设置为特定编号。 这部分似乎很好用 该应用程序有一项功能,可以让你播放最近播放的内容。出于某种原因,它只播放第一个音符10次——它似乎不理解新的数组值,因此它总是挂起For循环中的第一个if语句。我需要它读取新的数组值,以便它可以回放用户在给定乐器上播放的内容 代码: publicsvo

我正在设计一个小的Android应用程序,当你按下一个看起来像特定乐器的imageButton时,它可以播放声音(音符),你可以在6个imageButton上播放多达10个音符。它将注释编号存储在数组中,并将元素设置为特定编号。 这部分似乎很好用

该应用程序有一项功能,可以让你播放最近播放的内容。出于某种原因,它只播放第一个音符10次——它似乎不理解新的数组值,因此它总是挂起For循环中的第一个if语句。我需要它读取新的数组值,以便它可以回放用户在给定乐器上播放的内容

代码:
publicsvoiddrum1button(视图){//此代码段按预期工作
if(studio.drumCount<10){
新螺纹(drum.drum1).start();
drum.drums[studio.drumCount]=0;
Toast.makeText(getApplicationContext(),studio.drumCount+“drum.drumCount[studio.drumCount]=”+drum.drums[studio.drumCount],2).show();
drumCount++;
}
否则{
Toast.makeText(getApplicationContext(),“已达到记录限制。请前往工作室!”,5.show();
}
}
公共作废按钮(视图){
if(studio.drumCount<10){
新螺纹(滚筒.drum2).start();
鼓.鼓[studio.drumCount]=1;
Toast.makeText(getApplicationContext(),studio.drumCount+“drum.drumCount[studio.drumCount]=”+drum.drums[studio.drumCount],2).show();
drumCount++;
}
否则{
Toast.makeText(getApplicationContext(),“已达到记录限制。请前往工作室!”,5.show();
}
}
公共作废按钮(视图){

如果(studio.drumCount循环条件是
i<10
,但你用10初始化i。因此循环永远不会启动。

循环条件是
i<10
,但你用10初始化i。因此循环永远不会启动。

你能调试你的鼓数组来检查数组中的值是否正确吗?你能调试你的鼓数组来检查数组中的值是否正确吗数组中的值是否正确?:)for(int i=10;i<10;i++)非常明显。我认为她/他在测试人们的技能和反应时间!至少他/她应该选择正确的答案:)嗯,由于lil的失败,我第一次在循环中有一个syso:)哦,看起来很明显,但我正在编辑代码。我可以将其更改为i=0,但问题仍然存在。只有第一个声音文件播放。在我看来,代码应该可以工作,这意味着其他类(drum、studio)包括错误行为。如果没有其他代码,我只能猜测drumcounter将以某种方式设置为0:(int i=10;i<10;i++)很明显。我想她/他在测试人们的技能和反应时间!至少他/她应该选择正确的答案:)好吧,因为lil’失败,我第一次循环中有一个系统:)哦,看起来很明显,但我正在编辑代码。我可以将它更改为I=0,问题仍然存在。只有第一个声音文件播放。在我看来,代码应该可以工作,这意味着其他类(drum、studio)包含了错误行为。如果没有其他代码,我只能猜测drumcounter将以某种方式设置为0。
public void drum1button(View view) { //This code snippet works as expected
    if (studio.drumCount < 10){
        new Thread(drum.drum1).start();
        drum.drums[studio.drumCount] = 0;
        Toast.makeText(getApplicationContext(),studio.drumCount + " drum.drums[studio.drumCount] = " + drum.drums[studio.drumCount],2).show();

        studio.drumCount++;
    }
    else {
    Toast.makeText(getApplicationContext(),"Record limit reached. Head to the studio!",5).show();
    }
}


public void drum2button(View view) {
if (studio.drumCount < 10){
    new Thread(drum.drum2).start();
    drum.drums[studio.drumCount] = 1;
    Toast.makeText(getApplicationContext(),studio.drumCount + " drum.drums[studio.drumCount] = " + drum.drums[studio.drumCount],2).show();

    studio.drumCount++;

}
else {
Toast.makeText(getApplicationContext(),"Record limit reached. Head to the studio!",5).show();
}
}


public void drum3button(View view) {
    if (studio.drumCount <10 ) {
    new Thread(drum.drum3).start();
    drum.drums[studio.drumCount] = 2;
    Toast.makeText(getApplicationContext(),studio.drumCount + " drum.drums[studio.drumCount] = " + drum.drums[studio.drumCount],2).show();

    studio.drumCount++;
    }
    else {
    Toast.makeText(getApplicationContext(),"Record limit reached. Head to the studio!",5).show();
    }

}

public void drum4button(View view) {
    if (studio.drumCount < 10) {
    new Thread(drum.drum4).start();
    drum.drums[studio.drumCount] = 3;
    Toast.makeText(getApplicationContext(),studio.drumCount + " drum.drums[studio.drumCount] = " + drum.drums[studio.drumCount],2).show();

    studio.drumCount++;
    }
    else {
    Toast.makeText(getApplicationContext(),"Record limit reached. Head to the studio!",5).show();
    }
}

public void drum5button(View view) {
    if (studio.drumCount < 10) {
    new Thread(drum.drum5).start();
    drum.drums[studio.drumCount] = 4;
    Toast.makeText(getApplicationContext(),studio.drumCount + " drum.drums[studio.drumCount] = " + drum.drums[studio.drumCount],2).show();

    studio.drumCount++;
    }

    else {
    Toast.makeText(getApplicationContext(),"Record limit reached. Head to the studio!",5).show();
    }
}

public void drum6button(View view) {
    if (studio.drumCount < 10){
    new Thread(drum.drum6).start();
    drum.drums[studio.drumCount] = 5;
    Toast.makeText(getApplicationContext(),studio.drumCount + " drum.drums[studio.drumCount] = " + drum.drums[studio.drumCount],2).show();

    studio.drumCount++;
    }
    else {
        Toast.makeText(getApplicationContext(),"Record limit reached. Head to the studio!",5).show();

    }
}
Runnable drumPlayback = new Runnable() {

    public void run() {
    for (int i = 0; i < 10; i++) { //(was i = 10, typo in formatting when //pasting. Still does not work with i = 0
        //handler.postDelayed(drumPlayback, 5000);

        try {Thread.sleep(1000);} catch(Exception e) {}
         if (drum.drums[i] == 0) { 
          new Thread(drum.drum1).start(); //this is the only one that plays

          }
          if (drum.drums[i] == 1) { 
          new Thread(drum.drum2).start(); 
          } 
         if (drum.drums[i] == 2) { 
          new Thread(drum.drum3).start(); 
          } 
           if (drum.drums[i] == 3) { 
          new Thread(drum.drum4).start(); 
          } 
           if (drum.drums[i] == 4) { 
          new Thread(drum.drum5).start(); 
          } 
           if (drum.drums[i] == 5) {
          new Thread(drum.drum6).start(); 
                    }
                }
            }
    };