识别字符串中的特定字符并将其删除 - 不起作用

时间:2015-04-13 16:10:31

标签: java arrays string char

该程序应该接受用户输入并删除其中的任何数字,但很明显,有些错误。

private static String removeNum(String inp)
{
    String newInp = new String();
    char[] inpChars = inp.toCharArray();

    for(char output:inpChars)
    {
        if(output==0 || output==1 || output==2 || output==3 || output==4 || output==5 || output==6 || output==7 || output==8 || output==9)
        {

        }
        else
        {
            newInp += output;
        }
    }
    return newInp;
}

public static void main(String[] args)
{
    EasyReader console = new EasyReader();
    System.out.print("Enter input: \n");
    String inp = console.readLine();
    System.out.print("Output: \n");
    System.out.print(removeNum(inp));
}

4 个答案:

答案 0 :(得分:4)

通过将charint进行比较,您进行了错误的比较。

而不是

if(output==0 || output==1 || ...

你应该使用

if(output=='0' || output=='1' || ...

答案 1 :(得分:3)

您实际上可以节省大部分代码并使用正则表达式:

private static String removeNum(String inp) {
    return inp.replaceAll("[0-9]","");
}

答案 2 :(得分:2)

您应该将if语句中的每个数字放入单引号中,如下所示:if (output == '0' || output == '1' ... )

您也可以使用效率更高的条件:Character.isDigit(output)。在这种情况下,整个条件将如下所示:

if (Character.isDigit(output)) {
    ...
}

答案 3 :(得分:1)

在数字周围加上单引号。如果没有它们,则不会引用所需的字符,而是引用具有指定编号的字符。