Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android “为什么不工作?”;for loop";?_Android - Fatal编程技术网

Android “为什么不工作?”;for loop";?

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

当我运行程序时, 然后只有第一个输入和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 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})