【问题标题】:Android: switch case & random number code in the caseAndroid:切换案例和案例中的随机数代码
【发布时间】:2020-09-09 19:44:59
【问题描述】:

Android、java、工作室 4.0.1

尝试自己编写代码时,我遇到了一个我无法从编译器语句中理解的问题。 基本上,当您单击单选按钮时,会在 textview 字段中生成一个随机数。 我的问题是,在点击单选按钮的情况下编写的随机代码,编译器不接受。

代码如下:

package com.example.random;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.RadioButton;
import android.widget.TextView;

import java.util.Random;

public class MainActivity extends AppCompatActivity {

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

    public void onRadioButtonClicked(View view) {
        // Is the button now checked?
        boolean checked = ((RadioButton) view).isChecked();
        TextView MytextView = (TextView)findViewById(R.id.MytextView);
        int random;
        int random2;

        // Check which radio button was clicked
        switch(view.getId()) {
            case R.id.radioButton01:
                if (checked)
                    // 0 or 1 code
                    random = getRandomNumber(0,1);
                    MytextView.setText(random.toString());
                    break;
            case R.id.radioButton1to6:
                if (checked)
                    // 1 to 6 code
                    random2 = getRandomNumber(1,6);
                    MytextView.setText(random2.toString());
                    break;
        }
    }

    private int getRandomNumber(int min,int max) {
        return (new Random()).nextInt((max - min) + 1) + min;
    }

}

我假设 2 行 'Int random;'是错误的,但编译器似乎想把它们放在这里。 我会明白'random = getRandomNumber(0,1);'这一行在代码的 case 部分就足够了,但是编译器将“随机”标记为红色。

到目前为止,编译器说:'错误:不能在 MytextView.setText(random.toString()) 中取消引用 int;' //0 或 1 代码部分。

我想了解我在这里缺少什么。提前致谢。

(或者更简单地问:如何在 switch/case 中编写随机函数?)

【问题讨论】:

    标签: java android random


    【解决方案1】:

    好的,我找到了解决方案。一个可能的工作代码是:

    public void onRadioButtonClicked(View view) {
            // Is the button now checked?
            boolean checked = ((RadioButton) view).isChecked();
            TextView MytextView = (TextView)findViewById(R.id.MytextView);
            final Random rnd = new Random();
            // Check which radio button was clicked
            switch(view.getId()) {
                case R.id.radioButton01:
                    if (checked)
                        // 0 or 1 code
                        MytextView.setText(String.valueOf(rnd.nextInt(3-0) + 0));
                        break;
                case R.id.radioButton1to6:
                    if (checked)
                        // Dice 1 to 6 code
                        MytextView.setText("1 to 6");
                        break;
                case R.id.radioButton1to10:
                    if (checked)
                        // 1 to 10 code
                        MytextView.setText("1 to 10");
                        break;
            }
        }
    

    最后的'private int getRandomNumber'可以删除。没必要。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-21
      • 2015-05-12
      相关资源
      最近更新 更多