Android “为什么不工作?”;for loop";?
当我运行程序时, 然后只有第一个输入和50, 这两个数的乘法。 为什么不为loop工作。。。。。。。。。。。。。。。当我运行它时,代码块。使用C编程。它起作用了Android “为什么不工作?”;for loop";?,android,Android,当我运行程序时, 然后只有第一个输入和50, 这两个数的乘法。 为什么不为loop工作。。。。。。。。。。。。。。。当我运行它时,代码块。使用C编程。它起作用了 想象一下,首先输入1=3,输入2=30。我希望输出3*30=90,3*31=93,3*32=96,3*49=147。但输出显示只有3*49=147。这就是问题所在 package com.example.akibmahmud.namota; import android.app.AlertDialog; import androi
想象一下,首先输入1=3,输入2=30。我希望输出3*30=90,3*31=93,3*32=96,3*49=147。但输出显示只有3*49=147。这就是问题所在
package com.example.akibmahmud.namota;
import android.app.AlertDialog;
import android.media.MediaPlayer;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ScrollView;
import android.widget.TextView;
public class MainActivity extends ActionBarActivity implements MediaPlayer.OnCompletionListener {
EditText et1,et2;
private Button bt;
ScrollView sv;
TextView tv;
private MediaPlayer mp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et1= (EditText) findViewById(R.id.firsteditText);
et2= (EditText) findViewById(R.id.secondeditText);
bt= (Button) findViewById(R.id.button);
sv= (ScrollView) findViewById(R.id.scrollView);
tv= (TextView) findViewById(R.id.textView);
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String et11=et1.getText().toString();
String et22=et2.getText().toString();
if (!et11.equals("") && !et22.equals("")){
int input1=Integer.parseInt(et11);
int input2=Integer.parseInt(et22);
int i,k,r;
for (i = input1; i <=input1 ; i++) {
for (k =input2; k <= 50; k++) {
tv.setText(+i+"*"+k+"="+i*k+"/n");
}
}
}else{
play();
}
}
});
setup();
}
private void play(){
mp.start();
bt.setEnabled(false);
}
private void loadClip(){
try {
mp=MediaPlayer.create(this,R.raw.ok);
mp.setOnCompletionListener(this);
}catch (Throwable t){
goBlooey(t);
}
}
private void setup(){
loadClip();
bt.setEnabled(true);
}
private void goBlooey(Throwable t){
AlertDialog.Builder builder=new AlertDialog.Builder(this);
builder
.setTitle("Exception!")
.setMessage(t.toString())
.setPositiveButton("OK",null)
.show();
}
@Override
public void onCompletion(MediaPlayer mp) {
setup();
}
}
package com.example.akibmahmud.namota;
导入android.app.AlertDialog;
导入android.media.MediaPlayer;
导入android.support.v7.app.ActionBarActivity;
导入android.os.Bundle;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.view.view;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.ScrollView;
导入android.widget.TextView;
公共类MainActivity扩展了ActionBarActivity实现了MediaPlayer.OnCompletionListener{
编辑文本et1、et2;
专用按钮bt;
滚动视图sv;
文本视图电视;
私人媒体播放器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et1=(EditText)findViewById(R.id.firsteditText);
et2=(EditText)findViewById(R.id.secondeditText);
bt=(按钮)findViewById(R.id.Button);
sv=(ScrollView)findViewById(R.id.ScrollView);
tv=(TextView)findViewById(R.id.TextView);
bt.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
字符串et11=et1.getText().toString();
字符串et22=et2.getText().toString();
如果(!et11.equals(“”)&!et22.equals(“”){
int input1=Integer.parseInt(et11);
int input2=Integer.parseInt(et22);
int i,k,r;
对于代码中的(i=input1;i)
for (i = input1; i <=input1 ; i++) {
for (k =input2; k <= 50; k++) {
tv.setText(+i+"*"+k+"="+i*k+"/n");
}
}
for(i=input1;i您的问题是,您正在以CPU允许的速度设置文本(这比您看到的要快得多)。我们可以通过在迭代之间添加延迟来解决此问题。例如:
new Thread() {
float timeToWaitBetweenIterationsInSeconds = 1;
public void run() {
for (i = input1; i <=input1 ; i++) {
for (k =input2; k <= 50; k++) {
MainActivity.this.runOnUiThread(new Runnable() {
public void run() {
tv.setText(+i+"*"+k+"="+i*k+"/n");
}
}
Thread.currentThread().sleep((int) timeToWaitBetweenIterationsInSeconds*1000);
}
}
}
}.start();
我是第一个以数字的形式输入的人。第二个输入是50年代的任何一个数字。因为你一直在设置电视,所以你看不到转换。加上一些延迟,并打印日志。你期望什么?什么“不起作用”?如果你在for循环中不断地setText
,它的变化会很快,你看不到很多值。想象一下,首先input1=3,input2=30。我希望这个输出是3*30=90,3*31=93,3*32=96。3*49=147。但是输出显示只有3*49=147。这基本上是个问题,如果我有一个整数,我将它设置为1然后我将其设置为2,您希望它有1和2?在单击onClick
期间,用户界面变得无响应时,您将只看到最后一个值。我输入1以输入任何数字。如果第一个循环满足这些条件,则第二个循环可以。输入2的数量将输入乘法的数字。1将增加输入2的值,它将一直保持,直到值的条件增加1。并且将与输入1相乘。当条件不正确时,可以看到所有结果,程序将退出循环。但我只看到最后一个输出值。为什么?因为您没有附加到文本,所以在每次迭代后重新擦除并覆盖它。如果您想追加文本,我建议尝试tv.append(String-str)
,而不是tv.setText(String-str)
。我希望能在循环方面进一步帮助您,但我仍然不明白您试图实现什么。
for(int i : new int[]{3, 30})