我想为0
到9
的每个整数值设置计数器。重置该值并开始下一个整数值。例如,我有这个值:11111
我的应用程序必须从1
的第一个值开始并开始计数,然后在0
和9
之间随机停止。完成之后我必须和51111
一样。再次开始第二个值。 java中的for
必须处理所有值。在此示例中,我的字符串长度为5
,每个值的计数器必须显示为delay
。
更新 我的下面的代码不正确,无法正常工作。 我的简单代码是:
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的每个值设置计数器并显示它
答案 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
以随机删除每个字符