Solved

how to stop "array may not be initialized" warning

Posted on 2003-12-01
7
370 Views
Last Modified: 2010-03-31

my class has an array of ints named "calls" and an int "calls_size" to keep track of it's size. I know this screams for a Vector but I think it is a pain in the butt using a vector for ints, too much screwing around with Object nonsense

anyway, this function should return an array of ints matching "calls" but with "calls_size" at the begining, so if calls==10,11,12 then results=3,10,11,12

it has been awhile since I have used java, especially with arrays, so I'm not sure if my whole open ended array idea will work, but at any rate, line 06 gives me a compilation error:  "variable results might not have been initialized".
I am quite aware of this fact and I don't care if it is initialized or not since I am manually tracking the size. This error stops compilation, however. Is there any way to demote the error to simply a warning? Any suggestions regarding my scheme would also be welcomed.

01 public int[] getCalls()
02 {
03    try
04    {
05        int[] results;
06        results[0] = calls_size;
07        for(int i = 1; i <= calls_size; i++)
08        {
09            results[i] = calls[i];
10        }
11        return results;
12   }
   ...snip ...

Thanks,
Ken Goudsward
0
Comment
Question by:kengoudsward
  • 5
7 Comments
 
LVL 92

Expert Comment

by:objects
ID: 9855888
int[] results = new int[calls_size+1];
0
 
LVL 92

Expert Comment

by:objects
ID: 9855903
You have to declare the size of the array.
0
 
LVL 92

Expert Comment

by:objects
ID: 9856089
You can actually get the size of an array using:

myarray.length
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 92

Accepted Solution

by:
objects earned 150 total points
ID: 9856100
To have a dynamic int array you could create a wrapper class around Vector, something like:

public class IntArray
{
   private Vector v = new Vector();

   public void add(int i)
   {
      v.add(new Integer(i));
   }

   public int get(int index)
   {
      Integer i = (Integer) v.get(index);
      return i.intValue();
   }

   ...
}
0
 

Assisted Solution

by:stevebeech
stevebeech earned 50 total points
ID: 9856937
Ken,

Because the initialisation is inside the try{} block then the possibility occurs that it might not get initialised - not likely as its the first command in the block, and you're returning the result from within the block. But, what if you were returning from outside? Then you'd have a problem - the try block could fail and results would never have been initialised.
The simple solution (as Objects says) is simply to initialise the array to some value:

int[] results = new int[calls_size+1];

Steve

0
 

Author Comment

by:kengoudsward
ID: 9862255
Thanks guys,
can't test it today, but...
I like that wrapper class solution!
I will also try putting the array declaration before the 'try' block
0
 
LVL 92

Expert Comment

by:objects
ID: 9862318
> I will also try putting the array declaration before the 'try' block

That won't help. Even if you get rid of the compiler error you'll get a NPE at runtime.

http://www.objects.com.au
0

Featured Post

Free Tool: Postgres Monitoring System

A PHP and Perl based system to collect and display usage statistics from PostgreSQL databases.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
tomcat startup error 5 132
How to convert from xls to xlsx using java 7 84
Need Help! Getting a syntax error and don't understand why 3 38
Running JavaFX on the Raspberry Pi 27 120
For beginner Java programmers or at least those new to the Eclipse IDE, the following tutorial will show some (four) ways in which you can import your Java projects to your Eclipse workbench. Introduction While learning Java can be done with…
Introduction This article is the second of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article covers the basic installation and configuration of the test automation tools used by…
Viewers learn about the third conditional statement “else if” and use it in an example program. Then additional information about conditional statements is provided, covering the topic thoroughly. Viewers learn about the third conditional statement …
The viewer will learn how to implement Singleton Design Pattern in Java.

685 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question