public class StateTest {
public static double getYIf(double t) {
if (t > 7) {
return t - 1;
} else if (t >= 5) {
return t + 1;
} else if (t >= 3) {
return t * t - t * Math.sin(t);
} else if (t >= 1) {
return t * t - 2 * t - 2;
} else if (t >= 0) {
return t * t - 1;
}
return t - 1;
}
public static double getYSwitch(double t) {
double arr[] = { 0, 1, 3, 5, 7 };
int index = -1;
for (int i = arr.length - 1; i > 0; i--) {
if (t < arr[i] && t >= arr[i - 1]) {
index = i;
break;
}
}
double result = t - 1;
switch (index) {
case 1:
result = t * t - 1;
break;
case 2:
result = t * t - 2 * t - 2;
break;
case 3:
result = t * t - t * Math.sin(t);
break;
case 4:
result = t + 1;
break;
default:
break;
}
return result;
}
public static void main(String[] args) {
System.out.println(getYIf(8));
System.out.println(getYSwitch(8));
System.out.println(getYIf(6));
System.out.println(getYSwitch(6));
System.out.println(getYIf(5));
System.out.println(getYSwitch(5));
System.out.println(getYIf(3));
System.out.println(getYSwitch(3));
System.out.println(getYIf(-1));
System.out.println(getYSwitch(-1));
}
}
输出:
7.0
7.0
7.0
7.0
6.0
6.0
8.576639975820399
8.576639975820399
-2.0
-2.0
这道题主要的难点在于通过数组的查找获取到t所在的区间位置,获取到区间位置之后就可以根据不同的区间计算最终的y的值。