gpt4 book ai didi

java - 随机生成器 - 继承变量

转载 作者:行者123 更新时间:2023-12-02 10:32:54 25 4
gpt4 key购买 nike

请问有人可以帮忙吗?我刚刚开始一些非常基本的 Android 开发。我正在开发一个初始应用程序来帮助我的女儿学习她的乘法表。想法是(在其第一个版本中)随机生成 1 到 12 之间的 2 个数字。然后单击计算按钮,它将给出答案。我有它,以便它随机生成 2 个数字,但是,当我单击“计算”时,它不会计算,只是显示 0。我相信这与下一个方法(计算)看不到变量(digit1&digit2)的值有关。如果我将 2 个数字硬编码到计算方法中,它就会起作用。我只是无法计算随机生成的数字。非常感激任何的帮助。MainActivity.java:

package uk.co.myrayner.sophiestimestables;

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

import java.util.Random;


public class MainActivity extends AppCompatActivity {

int digit1;
int digit2;
int show_answer;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

public void randomise_digits(View view) {
Random rand1 = new Random();
int digit1 = rand1.nextInt(12) + 1;
displaydigit1(digit1);
Random rand2 = new Random();
int digit2 = rand2.nextInt(12) + 1;
displaydigit2(digit2);
}

public void calculate(View view) {
show_answer = (digit1 * digit2);
displayanswer(show_answer);
}

private void displaydigit1(int number) {
TextView digit1TextView = (TextView) findViewById(R.id.digit1);
digit1TextView.setText("" + number);
}

private void displaydigit2(int number) {
TextView digit2TextView = (TextView) findViewById(R.id.digit2);
digit2TextView.setText("" + number);
}

private void displayanswer(int number) {
TextView answerTextView = (TextView) findViewById(R.id.show_answer);
answerTextView.setText("" + number);

}
}

最佳答案

您的实现存在几个问题。

1) 在 randomise_digits 中,您设置了 digital1 和 digital2 的值,但这些是局部变量,而不是在方法外部声明的实例变量。因此,对 randomise_digits() 内的digit1和digit2进行的任何更改都不会反射(reflect)在MainActivity对象的digit1和digit2上。这就是为什么你得到 0,因为它们实际上没有设置为任何值(因为你在calculate()方法中引用了digit1和digit2的实例变量)。 randomise_digits() 方法中的本地 digital1 和 digital2 现在超出范围/不再存在。

2) 更改方法的名称以更好地反射(reflect)它们正在做什么。您的calculate()方法可能应该重命名为show()。您不需要将 View 对象作为所有方法的参数传递。您没有使用它们,为什么要包含它们?

3) 您不需要创建两个随机对象来计算两个随机数。一个就可以了。

你的类可能看起来像这样:

package uk.co.myrayner.sophiestimestables;

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

import java.util.Random;


public class MainActivity extends AppCompatActivity {

int digit1;
int digit2;
int show_answer;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Button calculateButton = findViewById(R.id.your_calculate_button_id);

calculateButton.setOnClickListener(new Button.OnClickListener() {

public void onClick(View v) {
randomise_digits();
calculate();
}

});
}

public void randomise_digits() {
Random rand1 = new Random();
digit1 = rand1.nextInt(12) + 1;
displaydigit1(digit1);
digit2 = rand1.nextInt(12) + 1;
displaydigit2(digit2);
}

public void calculate() {
show_answer = (digit1 * digit2);
displayanswer(show_answer);
}

private void displaydigit1(int number) {
TextView digit1TextView = (TextView) findViewById(R.id.digit1);
digit1TextView.setText("" + number);
}

private void displaydigit2(int number) {
TextView digit2TextView = (TextView) findViewById(R.id.digit2);
digit2TextView.setText("" + number);
}

private void displayanswer(int number) {
TextView answerTextView = (TextView) findViewById(R.id.show_answer);
answerTextView.setText("" + number);

}
}

如果您决定复制并粘贴上面的代码,请确保删除 Activity 布局 xml 中的所有 onclick 事件。

关于java - 随机生成器 - 继承变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53503650/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com