循环应该在第10次点击后停止,但事实并非如此

时间:2014-02-24 19:06:42

标签: android onclicklistener

我是Android编程新手。我正在制作一个小型测试应用程序,这是一个简单的乘数。 我的应用程序有一个Textview和三个按钮。也就是说 乘以2,乘以3和清除。 代码在乘法时工作得很好,但是我希望循环在10之后结束,textview应该在第10次点击按钮后显示“已停止”。我尝试了各种技术但似乎没有工作。我不确定“Do-while”是否是一个好主意。 这是java代码:

public class MainActivity extends Activity {

TextView Display;
Button X2, X3, Clear;
int a = 1, result;
String Over = "Stopped";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // a = 1;
    X2 = (Button) findViewById(R.id.bX2);
    X3 = (Button) findViewById(R.id.bX3);
    Clear = (Button) findViewById(R.id.bClear);
    Display = (TextView) findViewById(R.id.tvDisplay);
    X2.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            // a = 1;
            // this loop should stop after the 10th click of the button
            // and the text view should display "stopped"
            do {
                result = a * 2;
                Display.setText("2 X " + a + " = " + result);                   
                a++;                    
            } while (a == 0);
        }
    });
    X3.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            // a = 1;
            // this loop should stop after the 10th click of the button
            // and the text view should display "stopped"
            do {
                result = a * 3;
                Display.setText("3 X " + a + " = " + result);                   
                a++;                    
            } while (a == 0);
        }
    });
    Clear.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            result = 0;
            a = 1;
            Display.setText("" + result);
        }
    });
}

}

这里是XML代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="clip_vertical"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<TextView
    android:id="@+id/tvDisplay"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:gravity="center"
    android:hint="Result display"
    android:textSize="25sp" />

<Button
    android:layout_width="250dp"
    android:layout_gravity="center"
    android:id="@+id/bX2"
    android:layout_height="wrap_content"
    android:text="Multiply by 2" />

<Button
    android:layout_width="250dp"
    android:layout_gravity="center"
    android:id="@+id/bX3"
    android:layout_height="wrap_content"
    android:text="Multiply by 3" />

<Button
    android:layout_width="75dp"
    android:layout_gravity="center"
    android:id="@+id/bClear"
    android:layout_height="wrap_content"
    android:text="Clear" />

我不知道发布规则,因此如果我违反任何规则,请原谅。我真的被困在这里,任何帮助都会“很棒”。

谢谢。

4 个答案:

答案 0 :(得分:1)

您的循环正在执行每次点击

在检查while条件之前,do-while始终执行,同时我也看不到与值10相关的任何逻辑。

你可能想要

if (a <= 10) {
   //do some stuff
}

代替你的do-while循环

答案 1 :(得分:0)

你必须先保留一个计数器并用0初始化它。

onClickListener上将此计数器变量值加1并检查它是否等于10.如果是,则显示停止。

private int counter; // Instance variable

public void onClick(View v) {
    counter++;
    if(counter == 10) {
        // display the stop on your textview here
    }
    ...do whatever you want here
}

答案 2 :(得分:0)

每次单击按钮时,都会执行按钮的onClickListener。您需要在类级别拥有一个变量作为计数器来计算点击次数。每次单击该按钮时,都会将此计数器增加1。最后,当此计数器达到10时,您将设置TextView以显示已停止。

此外,使用'if'子句而不是do-while可能是更好的选择。

答案 3 :(得分:-1)

public class MainActivity extends Activity {

TextView Display;
Button X2, X3, Clear;
int a = 1, result;
String Over = "Stopped";
counter = 1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // a = 1;
    X2 = (Button) findViewById(R.id.bX2);
    X3 = (Button) findViewById(R.id.bX3);
    Clear = (Button) findViewById(R.id.bClear);
    Display = (TextView) findViewById(R.id.tvDisplay);
    X2.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            // a = 1;
            // this loop should stop after the 10th click of the button
            // and the text view should display "stopped"
            if(counter<10)

                result = a * 2;
                Display.setText("2 X " + a + " = " + result);                   
                a++;  
               counter++                  
            } 
           else{
                     Display.setText("Stopped");   
               }
        }
    });