关于java:无法在Android应用程序中解决掷骰子游戏的方法

Cannot resolve methods in Android app for game of craps

我正在创建一个简单的骰子滚动应用程序。
我收到此错误:

cannot resolve method for my nextInt() method and valueOf() method.

我已将myResults变量声明为Integer,因此我不确定为什么会出现此错误。 目前,应用程序应该掷骰子并返回值。 在解决此错误之前,我无法完成剩余的逻辑。 我想确保在继续之前我至少可以运行这部分。 最终目标是滚动两个模具并返回两者的总和,但此刻我只编码了一个模具。 有人能指出我正确的方向吗?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
public class MainActivity extends Activity {

        // my variables
        TextView mText;
        ImageButton mButton;
        int myResults;
        String output;

        // function that runs on Start Up
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            mText = (TextView)findViewById(R.id.results);
            mButton = (ImageButton)findViewById(R.id.roll);

            mButton.setOnClickListener(new View.OnClickListener()
            {
                public void onClick(View v)
                {
                    myResults = new Random(System.currentTimeMillis().nextInt(6)+1);
                    rollDice();
                    mText.setText(String.valueOF(myResults));
                }
            });
        }

        public void rollDice()
        {
            switch (myResults)
            {
                case 1:
                    mButton.setImageResource(R.drawable.die1);
                    break;
                case 2:
                    mButton.setImageResource(R.drawable.die2);
                    break;
                case 3:
                    mButton.setImageResource(R.drawable.die3);
                    break;
                case 4:
                    mButton.setImageResource(R.drawable.die4);
                    break;
                case 5:
                    mButton.setImageResource(R.drawable.die5);
                    break;
                case 6:
                    mButton.setImageResource(R.drawable.die6);
                    break;
            }
        }

一旦这个问题得到解决,我想要一些关于将第二个因素分解为myResults的指导。 但首先解决这些方法会很棒。

错误在:

1
2
3
myResults = new Random(System.currentTimeMillis().nextInt(6)+1);
rollDice();
mText.setText(String.valueOF(myResults));

您将)放在错误的位置。

1
myResults = new Random(System.currentTimeMillis().nextInt(6)+1);

应该

1
myResults = new Random(System.currentTimeMillis()).nextInt(6)+1;

问题是,

第一:

1
myResults = new Random(System.currentTimeMillis()).nextInt(6)+1;

第二:

1
mText.setText(String.valueOf(myResults));

试试这种方式。


String.valueOf()在您的代码中错误地大写(String.valueOf())。

您还错误地使用Random nextInt()方法。 System.currentTimeInMillis()返回long值,而nextInt()需要Random对象。 在这个问题的答案中演示了使用nextInt()的正确方法。

1
2
Random r = new Random();
int i1 = r.nextInt(80 - 65) + 65;

System.currentTimeMillis()返回long,它是一个基元,因此没有任何成员nextInt(...)

valueOF() <<我认为你的问题是资本化的'F'。

在一个有点相关的说明中,我不会在活动代码中包含骰子逻辑。 遵循OOP和MVC架构原则的更好方法是将骰子逻辑提取到单独的类中并从活动中调用它。