我是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" />
我不知道发布规则,因此如果我违反任何规则,请原谅。我真的被困在这里,任何帮助都会“很棒”。
谢谢。
答案 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");
}
}
});