'Making a constructor that accepts an integer array

How can I pass in an integer array into my constructor?

Here is my code:

import java.io.*;
import java.util.*;

public class Temperature implements Serializable
{
    private int[] temps = new int [7];
    public Temperature(int[] a)
    {
        for(int i=0; i < 7; i++)
        {
            temps[i] = a[i];
        }

    }
    public static void main(String[] args)
    {
        Temperature i = new Temperature(1,2,3,4,5,6,7);
    }
}

The error given is:

Temperature.java:17: error: constructor Temperature in class Temperature cannot be applied to given types;
        Temperature i = new Temperature(1,2,3,4,5,6,7);
                        ^
  required: int[]
  found: int,int,int,int,int,int,int
  reason: actual and formal argument lists differ in length
1 error


Solution 1:[1]

  • For the current invocation, you need a var-args constructor instead. So, you can either change your constructor declaration to take a var-arg argument: -

    public Temperature(int... a) {
         /**** Rest of the code remains the same ****/
    }
    
  • or, if you want to use an array as argument, then you need to pass an array to your constructor like this -

    Temperature i = new Temperature(new int[] {1,2,3,4,5,6,7}); 
    

Solution 2:[2]

This should do it: new Temperature(new int[] {1,2,3,4,5,6,7})

Solution 3:[3]

You can do it by the following way

import java.io.*;
import java.util.*;

public class Temperature implements Serializable
{
    private int[] temps = new int [7];
    public Temperature(int[] a)
    {
        for(int i=0; i < 7; i++)
        {
            temps[i] = a[i];
        }

    }
    public static void main(String[] args)
    {
        int [] vals = new int[]{1,2,3,4,5,6,7};  
        Temperature i = new Temperature(vals);
    }




}

Solution 4:[4]

 public static void main(String[] args)
    {
    Temperature i = new Temperature(new int[] {1,2,3,4,5,6,7});
    }

Solution 5:[5]

Temperature i = new Temperature(1,2,3,4,5,6,7);

When you try to initialize this constructor consider it has int values you get error msg like

required: int[] found: int,int,int,int,int,int,int reason: actual and formal argument lists differ in length Before intialize the value declare it in a separate variable

 import java.io.*;
import java.util.*;

public class HashPrint implements Serializable
{
    private int[] temps = new int [7];
    public HashPrint(int[] a)
    {
        this.temps=a;

    }
    public static void main(String[] args)
    {
        int arr[]={1,2,3,4,5,6,7};

        HashPrint i = new HashPrint(arr);
    }
}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2 Dan Iliescu
Solution 3 Bhavik Ambani
Solution 4 kosa
Solution 5 Baba Fakruddin