3

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

5 Answers 5

7
  • 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}); 
    
Sign up to request clarification or add additional context in comments.

Comments

1

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

Comments

1

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




}

Comments

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

Comments

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.