首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我的if语句在这个for循环中不工作?

为什么我的if语句在这个for循环中不工作?
EN

Stack Overflow用户
提问于 2013-05-16 21:03:28
回答 1查看 493关注 0票数 0

问题:

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

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

代码:

代码语言:javascript
运行
复制
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();

    }
}

代码语言:javascript
运行
复制
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(); 
                    }
                }
            }
    };
EN

回答 1

Stack Overflow用户

发布于 2013-05-16 21:18:27

循环条件是i < 10,但是您可以用10插入i,所以循环永远不会启动。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16597449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档