【问题标题】:Identify specific characters in a String and remove it - Doesn't work识别字符串中的特定字符并将其删除 - 不起作用
【发布时间】:2015-04-13 16:10:31
【问题描述】:

这个程序应该接受用户输入并删除在其中找到的所有数字,但很明显,出了点问题。

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));
}

【问题讨论】:

    标签: java arrays string char


    【解决方案1】:

    您将charint 进行比较是错误的比较。

    而不是

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

    你应该使用

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

          【解决方案4】:

          在数字周围加上单引号。没有它们,您引用的不是您想要的字符,而是具有指定数字的字符。

          【讨论】:

            猜你喜欢
            • 2012-09-26
            • 1970-01-01
            • 1970-01-01
            • 2019-03-28
            • 1970-01-01
            • 2018-03-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多