Java 简单的while循环不起作用

Java 简单的while循环不起作用,java,android,while-loop,Java,Android,While Loop,我有点小问题。我认为解决办法很简单,但不幸的是我找不到。我希望有人能帮助我 我有一个while循环,他必须数到十,然后将数字写入文本视图。 它仍然不起作用。。。 谢谢你的帮助! 代码如下: package de.androidnewcomer.animation; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.

我有点小问题。我认为解决办法很简单,但不幸的是我找不到。我希望有人能帮助我 我有一个while循环,他必须数到十,然后将数字写入文本视图。 它仍然不起作用。。。 谢谢你的帮助! 代码如下:

package de.androidnewcomer.animation;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;

import static android.R.attr.button;
import static de.androidnewcomer.animation.R.id.textView;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ImageView ball=(ImageView)findViewById(R.id.ball);
    Button button=(Button)findViewById(R.id.button);
    button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.button:
            count();
            break;
    }
}
private void count() {
    TextView textView=(TextView)findViewById(R.id.textView);
    int i;
    i=1;
    while(i<10) {
        i++;
        textView.setText(i);
        try {
            Thread.sleep(200);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
}
package de.androidnewcommer.animation;
导入android.os.Bundle;
导入android.support.v7.app.AppActivity;
导入android.view.view;
导入android.widget.Button;
导入android.widget.FrameLayout;
导入android.widget.ImageView;
导入android.widget.TextView;
导入静态android.R.attr.button;
导入静态de.androidnewcomer.animation.R.id.textView;
公共类MainActivity扩展AppCompatActivity实现View.OnClickListener{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView ball=(ImageView)findViewById(R.id.ball);
Button Button=(Button)findViewById(R.id.Button);
setOnClickListener(此);
}
@凌驾
公共void onClick(视图v){
开关(v.getId()){
案例R.id按钮:
计数();
打破
}
}
私有无效计数(){
TextView TextView=(TextView)findViewById(R.id.TextView);
int i;
i=1;
而(i使用带有整数值的setText()用于设置字符串资源引用。要设置文本本身,必须提供一个字符串:使用
setText(“+i”);
,它应该可以工作。

textView.setText(…)需要字符串对象,但使用int。必须使用以下选项将int转换为字符串:

  • 您可以使用String.valueOf(i)
    textView.setText(String.valueOf(i));

  • 您可以使用Integer.toString(i):
    textView.setText(Integer.toString(i));

  • 您可以使用空字符串文本
    textView.setText(“+i”);

  • 我更喜欢最后一个选项。对于您的代码,它应该类似于以下代码:

    private void count() {
       TextView textView=(TextView)findViewById(R.id.textView);
       int i;
       i=1;
       while(i<10) {
           i++;
           textView.setText("" + i);
           try {
               Thread.sleep(200);
           } catch (InterruptedException e) {
               e.printStackTrace();
           }
       }
    }
    
    private void count() {
       TextView textView=(TextView)findViewById(R.id.textView);
    
       for(int i = 1; i < 11; i++){ // From 1 to 10
           textView.setText("" + i);
           Thread.sleep(200); 
       }
    }
    
    private void count(){
    TextView TextView=(TextView)findViewById(R.id.TextView);
    int i;
    i=1;
    
    而(i使用倒计时,因为您正在阻止主线程

    CountDownTimer countDownTimer = new CountDownTimer(2000 /*amount*/, 200/*step*/) {
            public void onTick(long millisUntilFinished) {
               textView.setText("what ever you want");    
            }
    
            public void onFinish() {
                textView.setText("Done");
            }
        };
    countDownTimer.start();
    

    啊,老古董“不管用”问题描述,所以每个人都知道问题是什么。但我实际上有一个猜测:你希望看到计数到10,而不仅仅是方法完成的10?如果是这样:做研究。文本视图中的文本显示是什么?你的日志说明是什么?感谢所有这些答案。我现在在文本视图中得到了正确的输出,但就像Tom说的:output只有10-方法的结尾。我研究并发现了主线程中的“我不能使用thread.sleep”。但我认为该方法不在onCreate方法中-是吗?还是又出了什么问题?感谢所有帮助!这与它是什么类型的循环无关。