我是Java新手并制作Android应用程序。如何根据用户输入的内容制作一个滚动大量骰子的Java程序?
我创建的Java程序只掷一个骰子。
如何让Java从1到6随机滚动?
如何让Java根据用户想要的次数制作随机数?
最后,如何让Java根据用户输入的数字绘制图像?
这是我的应用程序的样子。
Valid XHTML http://img852.imageshack.us/img852/4439/screenshotjavawarhammer.png
这是我的代码
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>
答案 0 :(得分:14)
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)
之间进行选择。
答案 1 :(得分:1)
使用带有Random
种子的long
对象(System.currentTimeMillis()
是一个很好的对象)。然后从对象中调用nextInt(int n)
方法并传入模具大小。 (请记住,nextInt(int n)
的范围从0开始,因此您需要传入模具大小,然后将1添加到生成的卷筒中。
long
种子的原因是为了改善数字分布的(伪)随机性。
如果你还没有,你应该将模具尺寸声明为常数。随机here上的Javadoc。