2016-12-15 99 views
-5

我試圖寫在一個ArrayList存儲50個隨機產生的浮點數代碼50隨機浮點數組列表值。使用常規的for-loop循環查看值並刪除小於0.5的任何值。然後使用for-each循環來打印剩餘的值。生成唯一

這是到目前爲止我的代碼,我不知道從哪裏何去何從......

import java.util.ArrayList; 

public class fiftyFloats { 

    public static void main (String [] args) { 

     //create a reference for the array list 
     ArrayList <Float> vals; 

     //reserve space for it in memeory 
     vals = new ArrayList <Float> (50); 

     for (int i = 0; i<vals.size(); i++){ 
      i = new Float 
     } 

     for (Integer atPos: vals) { 
      System.out.println(vals.toString()); 
     } 
    } 
} 
+4

但沒有隨機生成的數字,只是一些不會編譯的循環。 – SomeJavaGuy

回答

1

有幾個方面,這取決於您希望如何生成一個「隨機」做數。

java.util.Random中具有一定的功能,可以被使用,包括「nextFloat」,其0和浮子類型的1之間返回一個隨機值。

所以

ArrayList <Float> vals = new ArrayList<>(); 
Random rand = new Random(); 
for (int i = 0; i < 50; i++) { 
    vals.add(rand.nextFloat()); 
} 

然後,它應該是很容易遍歷列表一次並移除任何數量不符合你的標準。你並不需要預留50點前面的一個ArrayList,這是使用它的好處之一,你可以動態地添加到它。

你的環路是將無法正常工作。您已經在循環代碼中將「i」定義爲整數,現在您正在嘗試創建一個具有相同名稱的浮點數。你可以在你的循環中使用「i」,但它將是你在「int i = 0;」中指定的「i」。

整體看起來,就像你很新,不明白關於Java一些核心的東西,如變量是如何工作的。諮詢導師/老師/基本文本可能會幫助你很多。

+0

我對Java很新,非常感謝你的全面回答 – rarayo55

0
  1. 要生成你需要使用Random類的隨機數。

- random.nextFloat()如果要包括更大數目則需要相乘將只產生0.0和1之間的數它

  • 您使用控制整數for循環不能被重新分配給一個浮動的環內

  • 你並不需要把arrayList.toString()在一個循環中

    import java.util.ArrayList; 
    import java.util.Random; 
    
    public class fiftyFloats { 
    
    public static void main(String[] args) { 
    
    ArrayList<Float> vals = new ArrayList<Float>(); 
    
    Float randomNum; 
    Random rand = new Random(); 
    for (int i = 0; i < 50; i++) { 
        randomNum = rand.nextFloat(); 
        if (randomNum > 0.5) { 
         vals.add(randomNum); 
        } 
    } 
    
    System.out.println(vals.toString()); 
    
    }} 
    
  • 0

    由於浮點值,你需要的最小值和最大值,那麼你可以使用納米時間之間不報價

    例子:

    List <Float> vals = new ArrayList <Float> (50); 
    
    for (int i = 0; i<vals.size(); i++){ 
        vals.add (System.current/100.0f); 
    }** 
    
    0

    我認爲這是你正在嘗試做的在這裏:

    //create a reference for the array list 
        ArrayList<Float> vals; 
    
        //reserve space for it in memeory 
        vals = new ArrayList<Float>(50); 
    
        Random rand = new Random(); 
    
        for (int i = 0; i < 50; i++) { 
         vals.add(rand.nextFloat()); 
        } 
    
        for (Float val : vals) { 
         System.out.println(val.toString()); 
        } 
    

    有些事情要在你的O指出riginal代碼:

    Float fl = new Float(2.2); 
    
        //create a reference for the array list 
        ArrayList<Float> vals; 
    
        // Here, you've set the _Capacity_, not the size. 
        vals = new ArrayList<Float>(50); // vals.size() => 0 
    
        // Based on above, you are essentially saying "never do these things" 
        // -> for (int i = 0; i < 0; i++) 
        for (int i = 0; i < vals.size(); i++) { 
    
         // this, if a valid expression, would have an incompatible type 
         // since i is of type int. 
    
         // if you were to use this, you would need to use a constructor such as 
         // new Float(1.2). 
    
         i = new Float 
    
        } 
    
        // In this enhanced loop, you are assigning a value from ArrayList vals 
        // to atPos, not the position. Since ArrayList is of type Float, 
        // atPos is a Float. 
        for (Integer atPos : vals) { 
         System.out.println(vals.toString()); 
    
        }