Solved

declaration of variable problem

Posted on 2008-10-06
4
186 Views
Last Modified: 2010-03-30
I want to do something like this:

if (some condition) {
  int x;
}
else {
  double x;
}

x = something;

I want x to be either int or double, depending on some condition
How can this be done?
0
Comment
Question by:allelopath
  • 2
  • 2
4 Comments
 
LVL 59

Accepted Solution

by:
Kevin Cross earned 500 total points
ID: 22655009
Technically you can do something like this:
http://java.sun.com/j2se/1.3/docs/api/java/lang/Number.html

You can then use .doubleValue() or .intValue().
boolean isInt = true;
Number x;
 
if (isInt) {
    x = new Integer(0);
} else {
    x = new Double(0);
}
 
x = 1.0;

Open in new window

0
 
LVL 24

Expert Comment

by:sciuriware
ID: 22656775
In effect, what you want is impossible in many languages.
Only in C (and derived languages) there is a thing called a 'union':

union
{
    int i;
    double d;
} x;

Then you can say: x.i = 6;   or x.d = 7.8
But even then you can not use the integer entered as a double.

Can you tell us what you really want.
I can not believe you want to save a few bytes of space .................

;JOOP!
0
 
LVL 59

Assisted Solution

by:Kevin Cross
Kevin Cross earned 500 total points
ID: 22658060
Here, I will do the impossible again!  

@sciuriware, just messing with you...

@allelopath, you cannot have the variable instantiated only under the if statement to use later as variables under the ifs in your code above are scoped only to the if statement containing them.  To fix that problem you must move the declaration of x above the if.  Once you do that you have the problem of only being able to declare one type.  Either declare a type using UNION which quite honestly is no different than creating a class called IntDouble that has members i and d and do the same thing in languages without union.  Alternative, is use a base class of types you want like in this case we can use Number which is base class for Integer and Double.  Those are not the primitive types you are using, but as you can see you can get the primitives easily using .intValue() or .doubleValue().

Hope that helps.
boolean isInt = true;
Number x = 1.78;
 
JOptionPane.showMessageDialog(null, (isInt)?x.intValue():x.doubleValue());

Open in new window

0
 
LVL 24

Expert Comment

by:sciuriware
ID: 22658325
Correct!

;JOOP!
0

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

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

Java contains several comparison operators (e.g., <, <=, >, >=, ==, !=) that allow you to compare primitive values. However, these operators cannot be used to compare the contents of objects. Interface Comparable is used to allow objects of a cl…
In this post we will learn how to make Android Gesture Tutorial and give different functionality whenever a user Touch or Scroll android screen.
Viewers will learn about if statements in Java and their use The if statement: The condition required to create an if statement: Variations of if statements: An example using if statements:
Viewers will learn about the regular for loop in Java and how to use it. Definition: Break the for loop down into 3 parts: Syntax when using for loops: Example using a for loop:

733 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