2010-09-10 52 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); 
    } 
}