所以说如果我有一个像“3 + 3-1 * 2/3 =”这样的字符串 我如何通过字符串查看每个字符,如果它的数字转为一个双倍然后如果没有把它变成一个字符??
答案 0 :(得分:4)
遍历字符串,并为每个字符使用Character.isDigit(char c)来确定它是否为数字。
在你尝试这个之后,如果你需要更多的帮助 - 写下你尝试过的东西,我会尽力帮助你。
答案 1 :(得分:0)
提示:如果无法将给定的String解析为double,Double.valueOf(String s)将抛出异常。
答案 2 :(得分:0)
您可以使用循环遍历String。例如:
for(int i = 0; i < mystring.length(); i++) {
char character = mystring.charAt(i);
// do stuff with character
}
您可以使用Character.isDigit(char)检查它是否为十进制字符。
您可以使用parseInt()将字符串转换为整数。
答案 3 :(得分:0)
String currentSubstring = "";
for (int index = 0; index < myString.length(); index++) {
char next = myString.charAt(index);
if ((next >= '0' && next <= '9') || next == '.') {
currentSubstring += next;
}
else {
if (! "".equals(currentSubstring)) {
System.out.println("Found a number: " + Double.parseDouble(currentSubstring));
currentSubstring = "";
}
System.out.println("Found a character: " + next);
}
}
//in case the string ended with some numbers
if (! "".equals(currentSubstring)) {
System.out.println("Found a number: " + Double.parseDouble(currentSubstring));
}
答案 4 :(得分:0)
这将通过您的字符串进行迭代,并将其拆分为数字块和.
或单个运算符。请注意,操作符是逐个处理的。
String input = "3+3-1*2/3=";
Pattern p = Pattern.compile("([0-9.]+|[^0-9.])");
Matcher m = p.matcher(input);
while (m.find ()) {
String chunk = m.group();
char c = chunk.charAt(0);
if (c >= '0' && c <= '9' || c == '.') then {
// numbers
} else {
// operator
}
}
如果您想尊重优先权,则应将您的地块重新排序为Polish form,然后进行计算。