Millyfg
Millyfg

Reputation: 3

Beginner Java project: what is wrong with my Array?

I have just started learning Java as part of my university course and am having a problem with y first project. I am just starting to create a project that basically sorts coins. I am trying to make a method called printCoinList() that prints the contents of a coin list, indicating what denominations are currently in circulation (i.e "The current coin denominations are in circulation: 200,100,50,20,10), in pennies.

So far I have declared my instance fields, created a parameter and attempted to make this method. My only issue is when i try and test it in the main() method it seems to have a problem with me using an array as the coinList parameter. This is what I have so far:

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});

The only problems seems to be in exampleOne as when I take this out the rest of the code seems to run fine. The error message is:

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

So does anyone know what I am doing wrong?

Upvotes: 0

Views: 147

Answers (4)

cryptor
cryptor

Reputation: 17

before creating an object CoinSorter exampleOne = new CoinSorter("pounds", 0, 10000, {10,20,50,100,200}); declare and initialize an array int arr[]={10,20,50,100,200}and then pass it in the constructor rather than passing {10,20,50,100,200}

like this

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

Upvotes: 0

Tony Keith
Tony Keith

Reputation: 491

Firt of all , in java , you need to specify the type of your Array :

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

Then your "printCoinList" method will not work as excepted , this should print :

The current coin denominations are in circulation [I@7852e922

Your final code should be :

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();
    
}

}

Result : The current coin denominations are in circulation : [10, 20, 50, 100, 200]

Good luck :) I hope I could access to you future exchange and buy and hold some crypto :D

Upvotes: 0

MC Emperor
MC Emperor

Reputation: 22977

This is because an array initializer may only be specified at declaration site or as part of an array creation expression. (JLS § 10.6)

Below is an array initializer at declaration site.

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

This is short for

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

However, it may not be used as 'array literal', unlike a string literal. That means that you must write out the array creation expression:

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

Upvotes: 1

Jabir
Jabir

Reputation: 2866

Arrays in java can be declared/initialized using one of the following ways.

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

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

with

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

OR

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

Upvotes: 1

Related Questions