For more control, try the basic OOP concept of overloading methods like
public float addition(float numa, float numb) {
// will return float
return numa + numb;
}
public int addition(int numa, float numb) {
// explicitly cast to int
return numa + (int) numb;
}
public int addition(float numa, int numb) {
// explicitly cast to int
return (int) numa + numb;
}
public int addition(int numa, int numb) {
// will return int
return numa + numb;
}
To examin your in put, try something like this...
public void examineInput(String input1, String input2) {
// For both are float
if (input1.indexOf(".") != -1 && input2.indexOf(".") != -1) {
float numa = Float.parseFloat(input1);
float numb = Float.parseFloat(input2);
float ans = addition(numa, numb);
Log.i(TAG, String.format("%f + %f = %f", numa, numb, ans));
}
// for first to be int and second to be float
else if (input1.indexOf(".") == -1 && input2.indexOf(".") != -1) {
int numa = Integer.parseInt(input1);
float numb = Float.parseFloat(input2);
int ans = addition(numa, numb);
Log.i(TAG, String.format("%d + %f = %d", numa, numb, ans));
}
// for first to be float and second to be int
else if (input1.indexOf(".") != -1 && input2.indexOf(".") == -1) {
float numa = Float.parseFloat(input1);
int numb = Integer.parseInt(input2);
int ans = addition(numa, numb);
Log.i(TAG, String.format("%f + %d = %d", numa, numb, ans));
}
// for both to be int
else if (input1.indexOf(".") == -1 && input2.indexOf(".") == -1) {
int numa = Integer.parseInt(input1);
int numb = Integer.parseInt(input2);
int ans = addition(numa, numb);
Log.i(TAG, String.format("%d + %d = %d", numa, numb, ans));
}
}
And the is the input to test this code, with output
examineInput("5.2", "6.2"); // 5.200000 + 6.200000 = 11.400000
examineInput("5", "3.6"); // 5 + 3.600000 = 8
examineInput("1.6", "5"); // 1.600000 + 5 = 6
examineInput("5", "5"); // 5 + 5 = 10
Note: you need to verify that examineInput always get valid numbers, not strings of non numaric characters...
Hope this helps to improve OOP concepts as well..:)