Java计算整数的每个值

时间:2014-08-22 20:16:35

标签: java android

我想为09的每个整数值设置计数器。重置该值并开始下一个整数值。例如,我有这个值:11111我的应用程序必须从1的第一个值开始并开始计数,然后在09之间随机停止。完成之后我必须和51111一样。再次开始第二个值。 java中的for必须处理所有值。在此示例中,我的字符串长度为5,每个值的计数器必须显示为delay

enter image description here

LIKE WITH THIS LINK

更新 我的下面的代码不正确,无法正常工作。 我的简单代码是:

public class MyActivity extends Activity {
    private String counter = "11111";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        final TextView txt = (TextView) findViewById(R.id.counter);
        int lenght = counter.length();

        int count = 0;
        for (int i = 0; i <= lenght; i++) {
            String letter = counter.substring(0, lenght - i);
            Integer value = Integer.valueOf(letter);
            Random rand = new Random();

            int  rnd = rand.nextInt(1000);

            for (int k = 0; k <= rnd ; k++) {
                try {
                    value += count;
                    int result = counter[letter] = value;
                    txt.setText(String.valueOf( result ));
                    Thread.sleep(1000);
                    if (count == 9) count = 0;

                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

            }
        }
    }
}

我想为11111的每个值设置计数器并显示它

1 个答案:

答案 0 :(得分:1)

永远不会阻止可能导致意外结果的UI线程,而是可以使用Handler来计算每秒,并随机计算每个传递的秒数。

<强>样品:

//////GLOBAL INSTANCE//////
String counter = "11111"; 
int counterString = 0;
Handler hand;
Runnable runnner;
int lenght = counter.length() + 1;
////////////////////////////

在您想要调用它的方法中:

hand = new Handler();
    final Random rand = new Random();
    runnner = new Runnable() {

        @Override
        public void run() {

            if(counterString < lenght)
            {
                int ranodomInt = rand.nextInt(9);
                StringBuilder s = new StringBuilder(counter);
                s.replace(counterString, counterString+1, ranodomInt+"");
                counter = s.toString();
                Log.d("result:", counter);
                counterString++;
                hand.postDelayed(runnner, 1000);
            }

        }
    };
    hand.post(runnner);

<强>结果:

08-22 19:30:21.416: D/result:(1599): 71111
08-22 19:30:22.416: D/result:(1599): 74111
08-22 19:30:23.431: D/result:(1599): 74111
08-22 19:30:24.436: D/result:(1599): 74181
08-22 19:30:25.446: D/result:(1599): 74182

以上代码将更新并编辑字符串counter以随机删除每个字符