更多控制,尝试像
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;
}
的重载方法基本OOP概念,考试系统的在放,尝试这样的事情......
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));
}
}
而且是输入测试此代码,输出
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
注:你需要验证examineInput始终得到有效的数字,而不是非numaric字符的字符串...
希望这有助于提高OOP概念以及.. :)