2014-02-20 84 views
0

我在寫一個程序時遇到了一些麻煩。 我需要做的是從0-9,100次生成隨機數,然後打印每個數字生成次數的結果。我必須把這一切都放到數組中,一個持有100個隨機數,另一個持有每個數字打印的「x」次。Java數組,隨機數生成器+排序到數組

這裏是到目前爲止我的代碼:

import java.applet.Applet; 
import java.awt.*; 

public class RandomTölur extends Applet { 

    TextArea t; 
    int[] random; 
    int[] hveOft; 
    int i; 
    int[] k = hveOft; 
    public void init() 
    { 
     t = new TextArea(5, 25); 
     this.add(t); 

     random = new int[101]; 
     random[0] = 0; 

     for(i=1; i<100; i++) 
     { 
      random[i] = random[i]; 
     } 

     for(int k=1; k<10; k++) 
     { 
      t.appendText("Talan " + k + " kom " + random[i] + " sinnum" + "\n"); 
     } 

    } 
} 

當它打印出 「太爛數 'k' 柑的 'i' sinnum」,這意味着「的個數數 'k' 印刷的 'i' 次

我遇到的問題是,它不打印出每個號碼多少次就出來了。

是否有任何人誰能夠發現我的錯誤?

詩篇。抱歉,如果這個職位是unproffessional或somethi ng,這是我在Stackoverflow上的第一篇文章。

在此先感謝! :)

Ps。我已經知道了這一點,感謝你們的幫助,所以感謝所有回覆此問題的人:)非常感謝。

+0

我猜它打印「塔蘭k kom 0 sinnum」9次? 'this.random [this.i] =(int)(Math.random()* 10);'會有幫助。如果從0開始最後一個循環,而不是1 –

+0

我會在哪裏放置你寫的代碼行,並且我會將它替換爲我寫的內容? – Birgir

回答

0

使用我注意到,有些這裏的其他答案的事情,我想出了與此實現:

public class Random extends Applet { 
    TextArea t; 
    int[] random; 
    int[] hveOft; 
    int i; 
    int[] k = this.hveOft; 
    @Override 
    public void init() 
    { 
     this.t = new TextArea(25, 25); //Made the TextArea a bit bigger. 
     this.add(this.t); 

     this.random = new int[10]; //Defined the random array as size 10 

     for(this.i=0; this.i<100; this.i++) { //looping from 0 to <100 will give you 100 random items 
      //Used Math.random, but this is the same idea as Karci10 
      this.random[(int)(Math.random() * 10)]++; 
     } 

     for(int k=0; k<10; k++) { //Again, looping from 0 to get all 0-9 numbers 
      //Don't forget to use k in this loop, not i as k is the one you're dealing with here. 
      this.t.appendText("Talan " + k + " kom " + this.random[k] + " sinnum" + "\n"); 
     } 

    } 
} 
+0

謝謝,它工作完美:) – Birgir

+0

正如我所說,問題的根源是隨機數位,我從@ karci10那裏獲得靈感。 –

0

您的代碼中有一些要點。

  • 首先,你永遠不會生成某種隨機數。
  • 第二random[i] = random[i] assignes本身,所以沒有變化。
  • 在你的appendText中,你使用random [i]從你的for循環中調用你。因此,這裏總是使用隨機[100]。
1

爲0..9號創建數組,並設置時間爲0

random = new int[10]; 

for(i=0; i<10; i++) 
{ 
    random[i] = 0; 
} 

和100次生成數量,增加數量陣列

Random rand = new Random(); 

for(i=0; i<100; i++) 
{ 

    random[rand.nextInt(10)]++; 
} 
+0

不需要像那樣初始化數組。它會爲你做。 我確實喜歡隨機化索引的想法。 +1。 –

0
int[] repetitions = new int[100]; 
int[] random = new random[100]; 
int auxiliar = 0; 
for(int i=0; i<100; i++){ 
    Random t = new Random(); 
    auxiliar = t.nextInt(10); 
    random[i] = auxiliar; 
    repetitions[auxiliar] +=1; 
} 

for(int i=0; i<100; i++){ 
    t.appendText("Talan " + i + " kom " + repetitions[i] + " sinnum" + "\n"); 
} 

,我認爲那是什麼你需要

這會產生100個隨機數存儲我n random,輸出是每個數字出現的次數,即使數字出現0次。

如果您不需要出現0次的號碼,你可以改變第二for爲TE下一個:

for(int i=0; i<100; i++){ 
    if(repetitions[i] != 0){ 
     t.appendText("Talan " + i + " kom " + repetitions[i] + " sinnum" + "\n"); 
    } 
}