Solved

how to stop "array may not be initialized" warning

Posted on 2003-12-01
7
376 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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
Optimize your web performance

What's in the eBook?
- Full list of reasons for poor performance
- Ultimate measures to speed things up
- Primary web monitoring types
- KPIs you should be monitoring in order to increase your ROI

 
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

Optimize your web performance

What's in the eBook?
- Full list of reasons for poor performance
- Ultimate measures to speed things up
- Primary web monitoring types
- KPIs you should be monitoring in order to increase your ROI

Question has a verified solution.

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

Java had always been an easily readable and understandable language.  Some relatively recent changes in the language seem to be changing this pretty fast, and anyone that had not seen any Java code for the last 5 years will possibly have issues unde…
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 …
Viewers will learn about arithmetic and Boolean expressions in Java and the logical operators used to create Boolean expressions. We will cover the symbols used for arithmetic expressions and define each logical operator and how to use them in Boole…

623 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