【问题标题】:How do I make my Android app generate a random number?如何让我的 Android 应用生成随机数?
【发布时间】:2011-03-09 23:35:20
【问题描述】:

我是 Java 新手,正在制作 Android 应用程序。如何制作一个根据用户输入的内容掷骰子的 Java 程序?

我创建的 Java 程序只掷一个骰子。

如何让 Java 从 1 随机滚动到 6?

如何让 Java 根据用户想要的次数生成随机数?

最后,如何让 Java 根据用户输入的数字绘制图像?

这是我的应用程序的样子。

.

这是我的代码

package com.warhammerdicerrolleralpha;

import java.util.Random;


import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class myMain extends Activity 
{
    /** Called when the activity is first created. 
     * @return */
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);



     final Random myRandom = new Random(6);



    Button buttonGenerate = (Button)findViewById(R.id.button1);
    final TextView textGenerateNumber = (TextView)findViewById(R.id.text4);




    buttonGenerate.setOnClickListener(new OnClickListener()
    {

           @Override
           public void onClick(View v) 
           {
            // TODO Auto-generated method stub
            textGenerateNumber.setText(String.valueOf(myRandom.nextInt()));
           }});

    }

}

我的 xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:padding="5dip" android:background="@drawable/warhammerdicerollalpha"
    android:layout_height="fill_parent">


    <TextView android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:text="@string/hello" />
    <EditText android:layout_height="wrap_content"
        android:layout_width="match_parent" android:id="@+id/enternumberofdice"></EditText>
    <Button android:text="Button" android:id="@+id/button1"
        android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
    <TextView android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:id="@+id/generatenumber" />
    <TextView android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:text="LOL" android:id="@+id/text4"></TextView>

</LinearLayout>

【问题讨论】:

  • 如果是星期五,我会重新标记这个问题space-marine
  • “掷一个骰子”是什么意思?我在这里看不到骰子。
  • 我想全力以赴地掷出 1 到 6 之间的数字。你是怎么做到的??

标签: java android eclipse image loops


【解决方案1】:

Random.nextInt()怎么样?

用法:

final Random rand = new Random();
int diceRoll = rand.nextInt(6) + 1; // uniformly distributed int from 1 to 6

在更新图像方面,有 6 个您想要显示的不同图像(大小都相同)并使用switch 在不同的myImageView.setImageResource(R.drawable.dice_n) 之间进行选择。

【讨论】:

  • 我无法在不同方法中定义的内部类中引用非最终变量 myRandom
  • nextInt(5) 生成从 0(包括)到 5(不包括)的随机数。所以你必须使用 nextInt(6)+1
  • 谢谢 Maaalte,我现在已经修好了。
  • @lonesarah 然后将其声明为 final - 在 Random 之前添加 final 关键字,因为它已经在您的代码中了。
  • 好的,现在 eclipse 想要删除 diceRoll,因为永远不会读取局部变量 diceRoll。
【解决方案2】:

使用带有long 种子的Random 对象(System.currentTimeMillis() 是一个很好的对象)。然后从您的对象中调用nextInt(int n) 方法并传入模具尺寸。 (请记住,nextInt(int n) 的范围从 0 开始,因此您需要传入骰子大小,然后将 1 添加到结果卷中)。

long 种子的原因是为了提高数字分布的(伪)随机性。

如果您还没有声明骰子大小,您可能应该将其声明为常数。随机上的 Javadoc here

【讨论】:

    猜你喜欢
    • 2019-06-08
    • 2020-10-29
    • 2015-03-27
    • 2018-07-23
    • 2015-11-14
    • 2020-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多