很久没写了。。
废话不多说,写吧。
题目描述:
代码:
public class Design {
public static boolean isNumeric(String str) {
if (str == null || str.isEmpty()) {
return false;
}
char stage = 'a';
int len = str.length();
boolean beginFlag = true;
boolean numBeginFlag = true;
for (int i = 0; i < len; i++) {
if (stage == 'a') {
if (str.charAt(i) == '.') {
if (!beginFlag && !numBeginFlag) {
stage = 'b';
beginFlag = true;
numBeginFlag = true;
continue;
} else if (beginFlag && numBeginFlag) {
stage = 'b';
beginFlag = true;
numBeginFlag = true;
continue;
} else {
return false;
}
} else if (str.charAt(i) == 'e' || str.charAt(i) == 'E') {
if (!beginFlag && !numBeginFlag) {
stage = 'c';
beginFlag = true;
numBeginFlag = true;
continue;
} else {
return false;
}
}
int num = str.charAt(i) - '0';
if (beginFlag) {
if (str.charAt(i) == '+' || str.charAt(i) == '-') {
beginFlag = false;
continue;
} else if (num < 0 || num > 9) {
return false;
} else {
beginFlag = false;
numBeginFlag = false;
continue;
}
} else {
if (numBeginFlag) {
if (num == 0) {
return false;
} else if (num <= 9 && num > 0) {
numBeginFlag = false;
} else if (num > 9 || num < 0) {
return false;
}
} else {
if (num < 0 || num > 9) {
return false;
}
}
}
} else if (stage == 'b') {
if (str.charAt(i) == 'e' || str.charAt(i) == 'E') {
if (beginFlag && numBeginFlag) {
return false;
}
stage = 'c';
beginFlag = true;
numBeginFlag = true;
continue;
}
int num = str.charAt(i) - '0';
if (beginFlag && numBeginFlag) {
if (num < 0 || num > 9) {
return false;
} else {
beginFlag = false;
numBeginFlag = false;
}
} else {
if (num < 0 || num > 9) {
return false;
}
}
} else {
// c
int num = str.charAt(i) - '0';
if (beginFlag) {
if (str.charAt(i) == '+' || str.charAt(i) == '-') {
beginFlag = false;
continue;
} else if (num < 0 || num > 9) {
return false;
} else {
beginFlag = false;
numBeginFlag = false;
continue;
}
} else {
if (numBeginFlag) {
if (num == 0) {
return false;
} else if (num <= 9 && num > 0) {
numBeginFlag = false;
} else if (num > 9 || num < 0) {
return false;
}
} else {
if (num < 0 || num > 9) {
return false;
}
}
}
}
}
return !beginFlag && !numBeginFlag;
}
public static void main(String[] args) {
System.out.println(isNumeric("+-5"));
}
}
我这代码写的也太烂了吧。。书上那么简单的。
今天下班 回来都太晚了,明天再看~