【问题标题】:How to Randomly Choose Button Text in Java?如何在 Java 中随机选择按钮文本?
【发布时间】:2015-06-18 10:03:28
【问题描述】:

朋友们,

我是一名土木工程师。现在我正在从事 Android 开发工作。我知道 Java 和 C#,但我认为我的编程知识只是像阅读和理解这样的编辑。如何提高我的技能,比如编写专门为 C# 和 Java 编写的程序。

谢谢。

那么这是我的问题..

例如,我有 3 个按钮和 3 个 int 值。

如何使按钮文本在按钮单击时从 3 个 int 值字符串中随机选择。

这是一款适用于 Android 平台的简单数学游戏。

        TextView textA = (TextView) findViewById(R.id.textView);
        TextView textB = (TextView) findViewById(R.id.textView3);
        final Button button1 = (Button) findViewById(R.id.button1);
        final Button button2 = (Button) findViewById(R.id.button2);
        final Button button3 = (Button) findViewById(R.id.button3);


        Random rand = new Random();
        final int x = rand.nextInt(1000);
        Random randB = new Random();
        int y = randB.nextInt(1000);
        Random randw = new Random();
        int w = randw.nextInt(1000);
        Random randz = new Random();
        int z = randz.nextInt(1000);

        int A = x;
        int B = y;
        int Wrong1 = (A + w);
        int Wrong2 = (A + z);
        final int CorrectAnswer = (A + B);

        String text = "text";
        Button[] arr = {button1, button2, button3};
        Random r = new Random();
        Button b = arr[r.nextInt(arr.length)];
        b.setText(text);

        int Ans1 = CorrectAnswer;
        int Ans2 = Wrong1;
        int Ans3 = Wrong2;


        textA.setText("" + A);
        textB.setText("" + B);
        button1.setText("" + Wrong1);
        button2.setText("" + Wrong2);
        button3.setText("" + CorrectAnswer);
        final int ACAns;
        ACAns = Integer.parseInt(button3.getText().toString());
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int AAns = Integer.parseInt(button1.getText().toString());


                if ((AAns == ACAns)) {
                    Toast.makeText(getBaseContext(), "Your answer is correct!", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(getBaseContext(), "Your answer is Wrong!", Toast.LENGTH_SHORT).show();
                }

            }
        });
        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int BAns = Integer.parseInt(button2.getText().toString());
                int ACAns = Integer.parseInt(button1.getText().toString());
                if ((BAns == ACAns)) {
                    Toast.makeText(getBaseContext(), "Your answer is correct!", Toast.LENGTH_SHORT).show();
                } else {
                    }    
            }
        });
        button3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int CAns = Integer.parseInt(button3.getText().toString());
                int ACAns = Integer.parseInt(button3.getText().toString());
                if ((CAns == ACAns)) {
                    Toast.makeText(getBaseContext(), "Your answer is correct!", Toast.LENGTH_SHORT).show();                      

                    return;
                } else {
                    Toast.makeText(getBaseContext(), "Your answer is Wrong!", Toast.LENGTH_SHORT).show();
                }

【问题讨论】:

  • 将值存储在array 中并在点击时选择一个
  • 我需要随机设置Button文本...如何??
  • 抱歉,无法理解您真正想要什么。是从数组中随机设置按钮文本还是随机生成文本字符串并将其设置为按钮文本?
  • 我需要将 Wrong1、Wrong2、CorrectAnswer 字符串设置为按钮文本。如果 Button1 选择 Wrong1 然后 Button2 从 Wrong2 和 CorrectAnswer 中随机选择,则按钮会像 Button1.getText(wrong1 or Wrong2 or CorrectAnswer) 一样随机获取此值。
  • 我想我知道你想做什么。如果这不是您想要做的,请检查我的回答和评论。但最好的办法可能是改写一点你的问题,因为它很不清楚你首先想做什么。希望我的回答能有所帮助

标签: java android button random


【解决方案1】:

取两个数组。

String buttonNamesArray[] = {"name1", "name2", "name3"};
int indexArray[] = {0, 1, 2};

现在通过任何逻辑生成一个随机数,并通过 3(indexArray 的长度)进行取模运算,以获得 [0-2] 范围内的索引。现在做

randomIndex = randomNumber % 3;
if(indexArray[randomIndex] != -1) {
    //assign the next button value buttonNamesArray[randomIndex]
    indexArray[randomIndex] = -1;
}

循环执行此操作,直到所有按钮都没有结束。

这只是逻辑而不是实际代码。

【讨论】:

  • 朋友们,我是一名土木工程师。现在我正在从事 Android 开发工作。我知道 Java 和 C#,但我认为我的编程知识只是像阅读和理解这样的编辑。如何提高我的技能,比如专门为 C# 和 Java 编写程序。谢谢。
  • 对于这种特殊情况,性能不是问题,但我认为使用数组并删除每一步的值会更好。此外,我可能是错的,但我认为你没有考虑到随机生成可以给你三倍相同的价值这一事实
  • @LonniBesançon 我同意循环可以运行多次这一事实。之所以没有讨论随机数生成逻辑的确切原因。此外,不删除字符串的假设是,对于下一次随机分配,必须重新初始化数组,这是一个游戏,频率会更高。为了节省初始化和删除开销,考虑了这种方法。对于一次性任务,我会选择你建议的那个。
  • 你说得完全正确,我没想到它实际上会发生更多。投票当之无愧;)
  • @LonniBesançon 谢谢 :)
【解决方案2】:

将字符串值存储在大小为 3 的数组中。 生成一个介于 0 和 2 之间的随机数。将该值保存在变量中,并将与该值关联的字符串分配给您的按钮。通过删除您已经分配的字符串来减少您的数组。然后生成一个介于 0 和 1 之间的随机整数。再次分配给一个按钮。删除您刚刚分配的元素,最后将最后一个字符串值分配给您的最后一个按钮。

抱歉没有代码,但我在手机上,在手机上编写代码并不容易。

希望对你有帮助

【讨论】:

  • 朋友们,我是一名土木工程师。现在我正在从事 Android 开发工作。我知道 Java 和 C#,但我认为我的编程知识只是像阅读和理解这样的编辑。如何提高我的技能,比如专门为 C# 和 Java 编写程序。谢谢。
  • 这样的问题并不是真正需要评论甚至是关于 SO 的问题。我相信谷歌对这个问题有很多答案。无论如何,学习编程的最佳方式实际上就是编程。祝你好运:)
猜你喜欢
  • 2015-03-13
  • 1970-01-01
  • 2017-12-26
  • 1970-01-01
  • 2014-07-27
  • 2017-06-02
  • 1970-01-01
  • 1970-01-01
  • 2019-06-10
相关资源
最近更新 更多