Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.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
Java 为什么我不能使用do{}while();为了控制一个操作?_Java_Android - Fatal编程技术网

Java 为什么我不能使用do{}while();为了控制一个操作?

Java 为什么我不能使用do{}while();为了控制一个操作?,java,android,Java,Android,为什么我不能使用do{}while;为了控制一个操作?例如,我希望当x变量获得5值时,作为结果,我使用Toast类看到Finish消息。这个任务不是这个语法的责任吗 do{ //Do some operations } while ( there were a condition ); 那么,为什么我不能使用do{}while;用于控制类似以下代码的操作 public class MainActivity extends Activity { TextView textVie

为什么我不能使用do{}while;为了控制一个操作?例如,我希望当x变量获得5值时,作为结果,我使用Toast类看到Finish消息。这个任务不是这个语法的责任吗

do{ 
    //Do some operations
}
while ( there were a condition );
那么,为什么我不能使用do{}while;用于控制类似以下代码的操作

public class MainActivity extends Activity {
    TextView textView;
    RelativeLayout relativeLayout;
    int x;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        relativeLayout = (RelativeLayout) findViewById(R.id.re);
        textView = (TextView) findViewById(R.id.te);
        do {
            relativeLayout.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    x += 1;
                    textView.setText(String.valueOf(x));
                }
            });

        } while (x == 5);
        Toast.makeText(getApplicationContext(), "Finish", Toast.LENGTH_SHORT)
                .show();
    }
}

在循环中,当x==5时,您正在添加click侦听器。这是不正确的。您需要添加一次


您不需要do while构造。只要在侦听器的onClick中使用x==5{x+=1;}即可实现所需的功能,您可以将其编写为:

public class MainActivity extends Activity {
    TextView textView;
    RelativeLayout relativeLayout;
    int x;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        relativeLayout = (RelativeLayout) findViewById(R.id.re);
        textView = (TextView) findViewById(R.id.te);
        relativeLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                x += 1;
                textView.setText(String.valueOf(x));
                if(x == 5) {
                    Toast.makeText(getApplicationContext(), "Finish", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
}
此代码:

设置一次相对布局的单击侦听器 每次单击时递增x 如果单击5次,将显示一个带有文本Finish的祝酒词 代码的其他问题:
在查找相对布局和文本视图时,您似乎使用了R.id.re,这是不正确的,应该会导致异常

请告诉我。。。您还应该注意,将循环设置为在UI线程上运行会导致UI线程被有效阻止,从而删除任何用户交互并使应用程序无用。仅在必要时运行while循环,如果需要UI交互,则在UI线程外部运行while循环。