字符串,字符串双字符串转换

时间:2011-03-24 13:06:48

标签: java

所以说如果我有一个像“3 + 3-1 * 2/3 =”这样的字符串 我如何通过字符串查看每个字符,如果它的数字转为一个双倍然后如果没有把它变成一个字符??

5 个答案:

答案 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,然后进行计算。