如何在多个按钮上单击显示的 TextView 整数值相乘
How to multiply displayed TextView Integer values on multiple buttons click
我有 10 个按钮和 2 列,例如 5x2。这 2 列包含带有 5 个按钮的循环,每个按钮的每列都有文本视图,当用户单击这 2 列的任何按钮时,将显示 2 个文本视图整数。我想将这些显示的数字相乘以获得第三个 Textview 中的最终结果,但它没有相乘,下面是我编写的代码:
public class MultiplicationActivity extends AppCompatActivity{
private static final int[] column1_buttonsArrays = {R.id.column1_button0, R.id.column1_button1, R.id.column1_button2, R.id.column1_button3, R.id.column1_button4};
private Button[] c1_buttons = new Button[column1_buttonsArrays.length];
int i1;
private static final int[] column2_buttonsArrays = {R.id.column2_button0, R.id.column2_button1, R.id.column2_button2, R.id.column2_button3, R.id.column2_button4};
private Button[] c2_buttons = new Button[column2_buttonsArrays.length];
int i2;
int num1, num2, solution1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.multiplication);
dummyTextValue1 = findViewById(R.id.dummy_value1);
dummyTextValue2 = findViewById(R.id.dummy_value2);
multipliedText = findViewById(R.id.multiplied_value);
for(i1 = 0; i1 < column1_buttonsArrays.length; i1++) {
c1_buttons[i1] = findViewById(column1_buttonsArrays[i1_buttons]);
c1_buttons[i1].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.column1_button0:
dummyTextValue1.setText("0");
break;
case R.id.column1_button1:
dummyTextValue1.setText("1");
break;
case R.id.column1_button2:
dummyTextValue1.setText("2");
break;
case R.id.column1_button3:
dummyTextValue1.setText("3");
break;
case R.id.column1_button4:
dummyTextValue1.setText("4");
break;
}
}
});
}
for(i2 = 0; i2 < column2_buttonsArrays.length; i2++) {
c2_buttons[i2] = findViewById(column2_buttonsArrays[i2_buttons]);
c2_buttons[i2].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.column2_button0:
dummyTextValue2.setText("0");
break;
case R.id.column2_button1:
dummyTextValue2.setText("1");
break;
case R.id.column2_button2:
dummyTextValue2.setText("2");
break;
case R.id.column2_button3:
dummyTextValue2.setText("3");
break;
case R.id.column2_button4:
dummyTextValue2.setText("4");
break;
}
}
});
}
String value1 = dummyTextValue1.getText().toString();
String value2 = dummyTextValue2.getText().toString();
num1 = Integer.parseInt(value1);
num2 = Integer.parseInt(value2);
solution1 = (int) (num1 * num2);
multipliedText.setText(solution1);
}
}
不明白我哪里做错了。请给我一个想法或更新的代码,说明如何从 for 循环中获取乘以显示的值。提前致谢..
问题是您的 solution
变量是一个整数。
solution1 = (int) (num1 * num2);
在android中,TextView.setText(int resource)
可以用来在TextView中设置一个String资源。您将要使用 TextView.setText(String text)
。检查 documentation
你可以这样做:
multipliedText.setText(String.valueOf(solution1));
另一个问题是 multipliedText.setText()
在 Activity 创建后立即执行。例如。两个 dummyValues 都将为空。单击按钮后,您需要执行此行。
像这样:
dummyTextValue1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
switch (view.getId()) {
//..
}
String value1 = dummyTextValue1.getText().toString();
String value2 = dummyTextValue2.getText().toString();
updateText(value1, value2);
}
});
private void updateText(String value1, String value2, TextView textView) {
num1 = Integer.parseInt(value1);
num2 = Integer.parseInt(value2);
solution1 = (int) (num1 * num2);
textView.setText(String.valueOf(solution1));
}
这将在每次单击其中一个按钮时调用 updateText,从而更新您的文本。祝你好运
我有 10 个按钮和 2 列,例如 5x2。这 2 列包含带有 5 个按钮的循环,每个按钮的每列都有文本视图,当用户单击这 2 列的任何按钮时,将显示 2 个文本视图整数。我想将这些显示的数字相乘以获得第三个 Textview 中的最终结果,但它没有相乘,下面是我编写的代码:
public class MultiplicationActivity extends AppCompatActivity{
private static final int[] column1_buttonsArrays = {R.id.column1_button0, R.id.column1_button1, R.id.column1_button2, R.id.column1_button3, R.id.column1_button4};
private Button[] c1_buttons = new Button[column1_buttonsArrays.length];
int i1;
private static final int[] column2_buttonsArrays = {R.id.column2_button0, R.id.column2_button1, R.id.column2_button2, R.id.column2_button3, R.id.column2_button4};
private Button[] c2_buttons = new Button[column2_buttonsArrays.length];
int i2;
int num1, num2, solution1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.multiplication);
dummyTextValue1 = findViewById(R.id.dummy_value1);
dummyTextValue2 = findViewById(R.id.dummy_value2);
multipliedText = findViewById(R.id.multiplied_value);
for(i1 = 0; i1 < column1_buttonsArrays.length; i1++) {
c1_buttons[i1] = findViewById(column1_buttonsArrays[i1_buttons]);
c1_buttons[i1].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.column1_button0:
dummyTextValue1.setText("0");
break;
case R.id.column1_button1:
dummyTextValue1.setText("1");
break;
case R.id.column1_button2:
dummyTextValue1.setText("2");
break;
case R.id.column1_button3:
dummyTextValue1.setText("3");
break;
case R.id.column1_button4:
dummyTextValue1.setText("4");
break;
}
}
});
}
for(i2 = 0; i2 < column2_buttonsArrays.length; i2++) {
c2_buttons[i2] = findViewById(column2_buttonsArrays[i2_buttons]);
c2_buttons[i2].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.column2_button0:
dummyTextValue2.setText("0");
break;
case R.id.column2_button1:
dummyTextValue2.setText("1");
break;
case R.id.column2_button2:
dummyTextValue2.setText("2");
break;
case R.id.column2_button3:
dummyTextValue2.setText("3");
break;
case R.id.column2_button4:
dummyTextValue2.setText("4");
break;
}
}
});
}
String value1 = dummyTextValue1.getText().toString();
String value2 = dummyTextValue2.getText().toString();
num1 = Integer.parseInt(value1);
num2 = Integer.parseInt(value2);
solution1 = (int) (num1 * num2);
multipliedText.setText(solution1);
}
}
不明白我哪里做错了。请给我一个想法或更新的代码,说明如何从 for 循环中获取乘以显示的值。提前致谢..
问题是您的 solution
变量是一个整数。
solution1 = (int) (num1 * num2);
在android中,TextView.setText(int resource)
可以用来在TextView中设置一个String资源。您将要使用 TextView.setText(String text)
。检查 documentation
你可以这样做:
multipliedText.setText(String.valueOf(solution1));
另一个问题是 multipliedText.setText()
在 Activity 创建后立即执行。例如。两个 dummyValues 都将为空。单击按钮后,您需要执行此行。
像这样:
dummyTextValue1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
switch (view.getId()) {
//..
}
String value1 = dummyTextValue1.getText().toString();
String value2 = dummyTextValue2.getText().toString();
updateText(value1, value2);
}
});
private void updateText(String value1, String value2, TextView textView) {
num1 = Integer.parseInt(value1);
num2 = Integer.parseInt(value2);
solution1 = (int) (num1 * num2);
textView.setText(String.valueOf(solution1));
}
这将在每次单击其中一个按钮时调用 updateText,从而更新您的文本。祝你好运