2010-09-10 53 views
0
陣列

所以我要開始說我是新來的Java編程。這是我的問題。我想創建一個本質上通過一組數組循環的程序。數組需要變長度。陣列中的Java

我的第一個步驟是我在開始時的分數陣列。每個陣列都連接到特定的用戶。這些陣列的長度取決於用戶的長度。

我的第二個步驟是將這些組用戶陣列與個別的參數是從步驟1中的用戶陣列本數組應該是可變長度,這取決於用戶的數量更大的陣列。

我的最後步驟,是通過一系列的數學運算來運行這個更大的陣列。我知道如何創建計算。這是執行計算

import java.lang.Math; 

public class Advisor_Score { 
    public static void main(String[] args) 
    { 


     double review_sum[]={5,5,5,5,5,5,5,5,5,5}; 
     //Every time a user answers a question, they will be rated. This is the array holds these ratings. 
     //A given user will have ten advisor scores, one for each category. 
     double sum = 0; 
     { 

      for(int x=0;x<review_sum.length;x++) 
       //All scores less than 0 or more than 5 are thrown out 
      { 
       if (review_sum[x]<0 || review_sum[x]>5) 
      { 
        sum+=0; 
      } 
       else 
        sum+=review_sum[x]; 
      } 
     double raw_advisor=(sum-(3*review_sum.length))/4; 
     System.out.println(raw_advisor); 
     double advisor_score_scaled= 2.5*(1-Math.pow(Math.E, -.5*raw_advisor)); 
     double advisor_score = 2.5 + advisor_score_scaled; 
     System.out.println(advisor_score); 
     } 
    } 
} 

最終欲通過較大的陣列循環的主方法,通過該組計算的運行更大的陣列中的每個參數。我並不喜歡數組,因爲我被告知這個列表可能會更好。我只是沒有學會如何使用列表。提前致謝!

回答

2

如果我在讀你的問題的權利,它看起來像你想一個用戶名映射到分數的列表。你可以做這樣的事情(這個例子是人爲的,因此值是硬編碼):

Map<String, List<Integer>> userScores = new LinkedHashMap<String, List<Integer>>(); 

String user1 = "Bob"; 
List scores1 = new ArrayList<Integer>(); 
scores1.add(5); 
scores1.add(10); 
scores1.add(15); 

userScores.put(user1, scores1); 

... 
... 

String user4 = "Rob"; 
List scores4 = new ArrayList<Integer>(); 
scores4.add(2); 
scores4.add(3); 
scores4.add(4); 

userScores.put(user4, scores4); 

然後你可以遍歷地圖這樣的過去,訪問用戶和他們的分數:

for(Map.Entry<String, List<Integer>> entry : userScores.entrySet()) { 
    String user = entry.getKey(); 
    List<Integer> scores = entry.getValue(); 

    //to iterate over the list of scores 
    for(int score : scores) { 
     ... 
    } 
} 

要回答你關於一個數組的數組普遍的問題,你可以有這樣一個列表的列表:

List<List<Integer> listOfLists = new ArrayList<List<Integer>>(); 

所以你創建列表,並將它們添加到您喜歡這個列表名單:

List<Integer> list1 = new ArrayList<Integer>(); 
list1.add(1); 
list1.add(2); 
list1.add(3); 

listOfLists.add(list1); 

... 
0
public class Array2 { 

    public static void main(String[] args) { 
     double[] myList = {1.9, 2.9, 3.4, 3.5}; 

     // Print all the array elements 
     for (int i = 0; i < myList.length; i++) { 
     System.out.println(myList[i] + " "); 
     } 
     // Summing all elements 
     double total = 0; 
     for (int i = 0; i < myList.length; i++) { 
     total += myList[i]; 
     } 
     System.out.println("Total is " + total); 
     // Finding the largest element 
     double max = myList[0]; 
     for (int i = 1; i < myList.length; i++) { 
     if (myList[i] > max) max = myList[i]; 
     } 
     System.out.println("Max is " + max); 
    } 
}