2011-03-09 42 views
5

我是新来的Java和android应用程序。你如何根据用户输入的内容制作一个根据掷骰子数量的Java程序?如何让我的Android应用程序生成一个随机数字?

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

如何让Java随机地从一个滚动到六个?

如何让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> 
+4

如果是星期五,我会重新标记这个问题'太空船'。 – 2011-03-09 23:38:11

+0

“掷骰子”是什么意思?我在这里看不到骰子。 – gigadot 2011-03-09 23:42:43

+0

我试图让我的所有人在一到六之间滚动一个数字。你是怎样做的?? – lonesarah 2011-03-09 23:43:24

回答

14

如何Random.nextInt()

用法:

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

在更新的图像方面,有要显示(全部具有相同的尺寸),并使用一个switch不同myImageView.setImageResource(R.drawable.dice_n)之间进行选择的6个不同的图像。

+0

我得到不能引用在不同方法中定义的内部类中的非最终变量myRandom – lonesarah 2011-03-09 23:52:31

+0

nextInt(5)生成从0(包含)到5(排除)的随机数。所以你必须使用nextInt(6)+1 – Maaalte 2011-03-09 23:52:36

+0

感谢Maaalte,我现在已经修复了它。 – fredley 2011-03-09 23:53:44

0

使用Random对象与long种子(System.currentTimeMillis()是一个很好的)。然后从您的对象中调用nextInt(int n)方法并传递模具尺寸。 (请记住,nextInt(int n)的范围从0开始,所以您需要传递模具尺寸,然后将1添加到所产生的卷筒中)。

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

如果您还没有,您应该声明芯片尺寸为常数。 Javadoc随机here

相关问题