2013-03-11 31 views
0

我希望你能幫助我解決這個問題。我可以生成隨機數字,但不是精確計數。隨機7位數字點擊android

問題是,一旦按鈕被點擊,我該如何生成7個隨機數字?

請參考下我的代碼:

public class MainActivity extends Activity { 

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

     final Random myRandom = new Random(); 


     Button buttonGenerate = (Button)findViewById(R.id.generateme); 
     final TextView textGenerateNumber = (TextView)findViewById(R.id.generatenumber); 

     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:layout_height="fill_parent" 
    > 

    <Button 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Generate Random number" 
    android:id="@+id/generateme" 
    /> 
    <TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/generatenumber" 
    /> 
    </LinearLayout 
+0

爲什麼你不能把隨機數發生代碼放在一個'for'中,它一次執行7次? – SudoRahul 2013-03-11 04:57:56

回答

0
int[] rand = new int[7]; 
int ceiling = 100; // for random numbers from 0 to 99 
for (int i=0; i < rand.length; i++) { 
    rand[i] = (int)Math.floor(ceiling*Math.rand()); 
} 

要定期執行檢查這個帖子: How to run a Runnable thread in Android?

+0

如何根據我上面的代碼輸入該方法? – jun 2013-03-11 05:06:11

+0

你可以使用前面提到的倒數計時器,或者使用postDelayed處理器&runnable,我會在我的答案中添加一個鏈接。 – eski 2013-03-11 05:10:56

0

您可以使用Java Random類:

final int MAX_VALUE = 100; 
Random rand = new Random(); 
int randValue1 = rand.nextInt(MAX_VALUE); 
int randValue2 = rand.nextInt(MAX_VALUE); 
0
/** Returning the Random Numbers*/ 
public String random() throws NoSuchAlgorithmException { 
    Random ranGen = new SecureRandom(); 
    byte[] randomno= new byte[8]; 
    ranGen.nextBytes(randomno); 
    String str = new String(randomno, "UTF8"); 
    return str ; 
} 
+0

如何在我的代碼中輸入該方法? (狀態)即時通訊錯誤( – jun 2013-03-11 09:18:41

0

莫迪FY您的代碼如下:

public class MainActivity extends Activity { 
public static int[] randomNumbers=new int[7]; 
public static byte[] sevenDigits=new byte[7]; 
private static boolean status=true; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     final Random myRandom = new Random(); 
      genRandomNumbers(); 
     while(status); 

     for (int i : randomNumbers) { 
      System.out.println(i); 
     } 
      System.out.println("seven digit random number : "+new String(sevenDigits)); 


     Button buttonGenerate = (Button)findViewById(R.id.generateme); 
     final TextView textGenerateNumber = (TextView)findViewById(R.id.generatenumber); 

     buttonGenerate.setOnClickListener(new OnClickListener(){ 

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

public void genRandomNumbers() { 
     new Thread(new Runnable() { 

      @Override 
      public void run() { 

       Random random=new Random(); 
       while(true) { 

        for(int i=0; i<7 ;i++) { 
         randomNumbers[i]=random.nextInt(10); 
              sevenDigits[i]=random.nextInt(10); 
        } 
        status=false; 
        try { 
         Thread.sleep(30000); 
        } catch (InterruptedException e) {      
         e.printStackTrace(); 
        } 

       } 

      } 
     }).start(); 
    } 

    } 
+0

)和(int我:randomNumbers) – jun 2013-03-11 05:32:24

+0

@jun 我已經更新了答案,現在試試。 – Visruth 2013-03-11 05:59:07

+0

什麼都沒有發生,程序工作,但它不會生成7個隨機數字。T_T – jun 2013-03-11 06:55:21

0

生成數低於10萬美元,然後將其格式化爲7位:

public String gen7DigitNumber() 
{ 
    Random rng = new Random(); 
    int val = rng.nextInt(10000000); 
    return String.format("%07d", val); 
} 
4

試試這個用數學和隨機類JAVA爲這個函數產生隨機帶有「n」個數字的數字。例如7位數的隨機數。

private int nDigitRandomNo(int digits){ 
    int max = (int) Math.pow(10,(digits)) - 1; //for digits =7, max will be 9999999 
    int min = (int) Math.pow(10, digits-1); //for digits = 7, min will be 1000000 
    int range = max-min; //This is 8999999 
    Random r = new Random(); 
    int x = r.nextInt(range);// This will generate random integers in range 0 - 8999999 
    int nDigitRandomNo = x+min; //Our random rumber will be any random number x + min 
    return nDigitRandomNo; 
} 
int digits = 7; 
int n = nDigitRandomNo(digits); 
//n will be a random number between 1000000 - 9999999