0
votes

Projet Java débutant: quel est le problème avec mon tableau?

Je viens de commencer à apprendre Java dans le cadre de mon cursus universitaire et j'ai un problème avec votre premier projet. Je commence tout juste à créer un projet qui trie essentiellement les pièces. J'essaie de faire une méthode appelée printCoinList () qui imprime le contenu d'une liste de pièces, indiquant quelles dénominations sont actuellement en circulation (c'est-à-dire "Les dénominations de pièces actuelles sont en circulation: 200,100,50,20,10), en centimes.

Jusqu'à présent, j'ai déclaré mes champs d'instance, créé un paramètre et tenté de créer cette méthode. Mon seul problème est que lorsque j'essaie de le tester dans la méthode main (), il semble avoir un problème avec moi en utilisant un tableau comme paramètre coinList. Voici ce que j'ai jusqu'à présent:

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
    The constructor CoinSorter(String, int, int, int, int, int, int, int) is undefined
    Syntax error on token "{", delete this token
    Syntax error on token "}", delete this token

Le seul problème semble être dans exampleOne car lorsque je retire cela, le reste du code semble fonctionner correctement. Le message d'erreur est:

public class CoinSorter {

    //Instance Fields
    String currency;
    int minCoinIn;
    int maxCoinIn;
    int[] coinList;
    
    //constructor
    public CoinSorter(String Currency, int minValueToExchange, int maxValueToExchange, int[] initialCoinList) {
        currency=Currency;
        minCoinIn=minValueToExchange;
        maxCoinIn = maxValueToExchange;
        coinList= initialCoinList;
        
    }
    
                public void printCoinList() {
        System.out.println("The current coin denominations are in circulation"
                + coinList);
    }
    
    
    public static void main(String[] args) {
        //An example
        
        CoinSorter exampleOne = new CoinSorter("pounds", 0, 10000, {10,20,50,100,200});

Alors, est-ce que quelqu'un sait ce que je fais de mal?


0 commentaires

4 Réponses :


1
votes

Les tableaux en java peuvent être déclarés / initialisés de l'une des manières suivantes.

   CoinSorter exampleOne = new CoinSorter("pounds", 0, 10000, new int[]{10,20,50,100,200});

remplace CoinSorter exampleOne = new CoinSorter("pounds", 0, 10000, {10,20,50,100,200});

avec

  CoinSorter exampleOne = new CoinSorter("pounds", 0, 10000, myIntArray );

OU

int[] myIntArray = {10,20,50,100,200};
int[] myIntArray = new int[]{10,20,50,100,200};


0 commentaires

1
votes

Cela est dû au fait qu'un initialiseur de tableau ne peut être spécifié qu'au niveau du site de déclaration ou dans le cadre d'une expression de création de tableau. ( JLS § 10.6 )

Vous trouverez ci-dessous un initialiseur de tableau sur le site de déclaration.

new CoinSorter("pounds", 0, 10000, new int[] { 10, 20, 50, 100, 200 });

C'est l'abréviation de

int[] array = new int[] { 2, 3, 5, 7, 11 };

Cependant, il ne peut pas être utilisé comme «littéral de tableau», contrairement à un littéral de chaîne. Cela signifie que vous devez écrire l' expression de création de tableau :

int[] array = { 2, 3, 5, 7, 11 };


4 commentaires

Bonjour Merci! cela a fonctionné. J'ai utilisé le nouveau CoinSorter ("livres", 0, 10000, new int [] {10, 20, 50, 100, 200}); Cependant, maintenant, quand j'essaye d'imprimer ma méthode, elle sort avec Les dénominations de pièces actuelles sont en circulation [I @ 1c4af82c Au lieu d'imprimer les dénominations de pièces, il imprime simplement la mémoire. Une idée de la façon de résoudre ce problème également? Merci beaucoup!


@Millyfg Cette question est déjà répondue ici .


Merci! tous triés.


@Millyfg N'oubliez pas de marquer l'une des réponses comme acceptée, pour informer la communauté que cette question a été traitée.



0
votes

Tout d'abord, en java, vous devez spécifier le type de votre Array:

CoinSorter exampleOne = new CoinSorter ("livres", 0, 10000, new int [] {10,20,50,100,200});

Ensuite, votre méthode "printCoinList" ne fonctionnera pas comme excepté, cela devrait imprimer:

Les dénominations de pièces actuelles sont en circulation [I @ 7852e922

Votre code final doit être:

import java.util.Arrays;

public class CoinSorter {

//Instance Fields
String currency;
int minCoinIn;
int maxCoinIn;
int[] coinList;

//constructor
public CoinSorter(String Currency, int minValueToExchange, int maxValueToExchange, int[] initialCoinList) {
    currency=Currency;
    minCoinIn=minValueToExchange;
    maxCoinIn = maxValueToExchange;
    coinList= initialCoinList;
    
}

            public void printCoinList() {
    System.out.println("The current coin denominations are in circulation : "
            + Arrays.toString(coinList));
}


public static void main(String[] args) {
    //An example
    CoinSorter exampleOne = new CoinSorter("pounds", 0, 10000, new int[]{10,20,50,100,200});
    exampleOne.printCoinList();
    
}

}

Résultat: les dénominations de pièces actuelles sont en circulation: [10, 20, 50, 100, 200]

Bonne chance :) J'espère que je pourrais accéder à votre futur échange et acheter et détenir de la crypto: D


0 commentaires

0
votes

avant de créer un objet CoinSorter exampleOne = new CoinSorter("pounds", 0, 10000, {10,20,50,100,200}); déclarer et initialiser un tableau int arr[]={10,20,50,100,200} puis le passer dans le constructeur plutôt que de passer {10,20,50,100,200}

comme ça

int arr[]={10,20,50,100,200};
CoinSorter exampleOne = new CoinSorter("pounds", 0, 10000, arr);


0 commentaires