Java ArrayList <double>作为参数</double>

时间:2011-03-14 01:34:34

标签: java arraylist double

我目前正在实验室工作,想知道如何处理我至少花了两个小时的以下问题:

我被要求创建一个包含值1,2,3,4和10的ArrayList。虽然我通常在创建具有所述值的ArrayList时遇到任何问题,但这次我遇到了麻烦。我应该在方法中创建ArrayList 之外还是里面方法?无论我尝试过哪种方式,我都会收到许多错误消息。如何向此ArrayList参数添加值?从main方法调用它时,我试图向它添加值,但这仍然不起作用。这是有问题的方法。

public static double ScalesFitness(ArrayList<Double> weights){
    //code emitted for illustration purposes
}

如果有人能帮助我,我将不胜感激。如果需要更多代码,请告诉我。

非常感谢你。

米克。

编辑:相关课程的代码如下:

import java.util.*;

public class ScalesSolution
{
private static String scasol;
//Creates a new scales solution based on a string parameter
//The string parameter is checked to see if it contains all zeros and ones
//Otherwise the random binary string generator is used (n = length of parameter)
public ScalesSolution(String s)
{
    boolean ok = true;
    int n = s.length();
    for(int i=0;i<n;++i)
    {
        char si = s.charAt(i);
        if (si != '0' && si != '1') ok = false;
    }
    if (ok)
    {
        scasol = s;
    }
    else
    {
        scasol = RandomBinaryString(n);
    }
}
private static String RandomBinaryString(int n)
{
    String s = new String();

    for(int i = 0; i > s.length(); i++){
        CS2004.UI(0,1);
            if(i == 0){
                System.out.println(s + "0");
            }
            else if(i == 0){
                System.out.println(s + "1");
            }
    }

    return(s);
}
public ScalesSolution(int n) 
{
    scasol = RandomBinaryString(n); 
}
//This is the fitness function for the Scales problem
//This function returns -1 if the number of weights is less than
//the size of the current solution



public static double scalesFitness(ArrayList<Double> weights)
{   
    if (scasol.length() > weights.size()) return(-1);
    double lhs = 0.0,rhs = 0.0;

    double L = 0;
    double R = 0;

    for(int i = 0; i < scasol.length(); i++){
        if(lhs == 0){
            L = L + i;
        }
        else{
            R = R + i;
        }
    }

    int n = scasol.length();

    return(Math.abs(lhs-rhs));
}
//Display the string without a new line
public void print()
{
    System.out.print(scasol);
}
//Display the string with a new line
public void println()
{
    print();
    System.out.println();
}

}

我正在使用的另一个类文件(Lab7)是:

import java.util.ArrayList;

public class Lab7 {

public static void main(String args[])
{

    for(int i = 0 ; i < 10; ++i)
    {
        double x = CS2004.UI(-1, 1);
        System.out.println(x);
    }

    System.out.println();

    ScalesSolution s = new ScalesSolution("10101");
    s.println();

}

}

4 个答案:

答案 0 :(得分:2)

你可以这些

1)使用varargs而不是list

public static double scalesFitness(Double...weights)

所以你可以用以下方法调用这个方法:

scalesFitness(1.0, 2.0, 3.0, 4.0, 10.0);

2)在方法之外创建列表

ArrayList<Double> weights = new ArrayList<Double>();
weights.add(1.0); 
weights.add(2.0); 
weights.add(3.0); 
weights.add(4.0); 
weights.add(10.0); 

scalesFitness(weights);

答案 1 :(得分:1)

对于您的初始发布,这将有效:

scalesFitness (new ArrayList<Double> (Arrays.asList (new Double [] {1.0, 2.0, 4.0, 10.0})));

您可以在数组表单中明确列出值,但

  • 您必须使用1.0而不是1来表示双打
  • 你必须在new Double []前面加上一个数组,而不只是双打的数组
  • Arrays.asList()创建List的形式,但不是ArrayList,而是
  • 幸运的是,ArrayList在其构造函数中接受Collection作为初始参数。

所以几乎没有样板,你已经完成了。 :)

如果您可以重写scalesFitness,那当然会更容易一些。 List<Double>作为参数已经是一项改进。

答案 2 :(得分:0)

  

我应该在方法之外还是在方法内创建ArrayList?

ArrayList是方法的参数,因此需要在调用方法之前在方法外部创建。

答案 3 :(得分:0)

您需要在包含方法的文件中导入ArrayList。这可能已解决,但这就是我遇到的问题。