Java ArrayList<Double> en tant que Paramètre
Je suis actuellement en train de travailler sur un laboratoire et je voudrais savoir comment gérer le problème suivant que j'ai passé au moins deux heures sur:
Je suis invité à créer une liste de tableaux contenant les valeurs 1, 2, 3, 4 et 10. Alors que j'ai l'habitude de ne jamais avoir aucun problème pour la création d'une liste de tableaux avec ces valeurs, j'ai du mal cette fois. Dois-je créer le ArrayList hors de la méthode ou de à l'intérieur la méthode? Selon la façon dont je l'ai essayé, j'ai été présenté avec de nombreux messages d'erreur. Comment puis-je ajouter des valeurs à cette liste de tableaux en paramètre? J'ai tenté d'ajouter des valeurs lors de l'appel de la méthode main, mais cela ne fonctionne toujours pas. Voici la méthode en question.
public static double ScalesFitness(ArrayList<Double> weights){
//code emitted for illustration purposes
}
Si quelqu'un pouvait m'aider ce serait très apprécié. Si plus de code est requis, alors s'il vous plaît laissez-moi savoir.
Je vous remercie beaucoup.
Mick.
EDIT: le code de La classe en question est comme suit:
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();
}
}
L'autre fichier de classe que j'utilise (Lab7) est:
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();
}
}
Salut Brian. Si je tente d'ajouter ce qui suit à l'extérieur de la méthode: ArrayList<Double> poids = {1, 2, 3, 4, 10}; puis je me suis présenté avec le message d'erreur suivant: incompatibilité de Type: impossible de convertir de type int[] pour ArrayList<Double>. Je suis alors invité à modifier le type de tableau int[] qui n'est pas ce que je cherche à faire. Si j'ajoute la même déclaration dans la méthode, je suis invité à renommer 'poids' et, encore une fois, pour changer le type de tableau int[]. J'espère que cette aide?
les réponses ci-dessous d'autres doivent maintenant aider. Quand vous dites
{1, 2, 3, 4, 10}
c'est un tableau implicite de int
(int[]
), vous ne pouvez pas donner à ArrayList<Double>
. Si vous n'avez pas besoin des fonctionnalités de la ArrayList
, vous pourriez tout aussi bien utiliser double[] myWeights = { 1.0, 2.0, 3.0, 4.0, 10.0 }
et votre méthode de prendre double[] weights
OriginalL'auteur MusTheDataGuy | 2011-03-14
Vous devez vous connecter pour publier un commentaire.
vous pouvez ces
1) utilisation varargs au lieu de la liste
de sorte que vous pouvez appeler cette méthode avec :
2) créer la liste à l'extérieur de votre méthode
new ArrayList<Double>(Arrays.asList(1.0, 2.0, ...))
travaille trop. Bien qu'idéalement, la méthode ne nécessite pas une liste de tableaux, mais plutôt une Liste de sorte que vous pouvez simplement utiliserArrays.asList(1.0, 2.0, ...)
.Je suis d'accord avec l'utilisation de la Liste : scalesFitness(List<Double> poids)
OriginalL'auteur joel1di1
À l'égard de votre première affectation, ce serait le travail:
Vous pouvez explicitement la liste des valeurs dans la Matrice de la forme, mais
new Double []
de faire un Tableau et un Tableau ne suffit pas de doubleDonc, avec presque pas de passe-partout, vous avez terminé. 🙂
Si vous pouvez réécrire
scalesFitness
qui serait évidemment un peu plus facile.List<Double>
en tant que paramètre est déjà une amélioration.OriginalL'auteur user unknown
La liste de tableaux est un paramètre de la méthode il besoin d'être créé en dehors de la méthode, avant d'appeler la méthode.
nous aurions besoin de code. Qui indiquent que vous n'êtes pas à comprendre ce que vous êtes en train de créer et de passage.
J'ai juste mis à jour le post original. Merci.
OriginalL'auteur camickr
Vous avez besoin pour l'importation de liste de tableaux dans le fichier qui contient vos méthodes. C'est probablement résolu, mais c'est le problème que je rencontre.
OriginalL'auteur Evan Ross Davis