Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 滤波算法故障 公共静态字符串过滤器phoneNumber(字符串电话号码){ Character[]characters=新字符[phoneNumber.length()]; 如果(字符长度>9) { for(int i=0;i_Java_Arrays_Filter - Fatal编程技术网

Java 滤波算法故障 公共静态字符串过滤器phoneNumber(字符串电话号码){ Character[]characters=新字符[phoneNumber.length()]; 如果(字符长度>9) { for(int i=0;i

Java 滤波算法故障 公共静态字符串过滤器phoneNumber(字符串电话号码){ Character[]characters=新字符[phoneNumber.length()]; 如果(字符长度>9) { for(int i=0;i,java,arrays,filter,Java,Arrays,Filter,我试图过滤数字中的空字符,但是当在字符串中发现2个或更多空字符时,它只删除第一个 您的问题是在for循环中增加了i,当您找到一个空格时,就会跳过它。在下一个循环中设置字符中的数字时,跳过了一个条目。您必须使用两个步进变量,一个用于步进电话号码,另一个用于字符 看起来您想返回一个过滤电话号码,但正在返回您发送的值 您可以使用字符串上的搜索和替换方法 public static String filterPhoneNumber(String phoneNumber) { Character

我试图过滤数字中的空字符,但是当在字符串中发现2个或更多空字符时,它只删除第一个

您的问题是在for循环中增加了
i
,当您找到一个空格时,就会跳过它。在下一个循环中设置
字符中的数字时,跳过了一个条目。您必须使用两个步进变量,一个用于步进
电话号码
,另一个用于
字符

看起来您想返回一个过滤电话号码,但正在返回您发送的值

您可以使用字符串上的搜索和替换方法

public static String filterPhoneNumber(String phoneNumber) {

    Character[] characters = new Character[phoneNumber.length()];
    if (characters.length > 9)
    {
        for (int i = 0; i < characters.length; i++)
        {
            if (characters[i] != ' ')
            {
                characters[i] = phoneNumber.charAt(i);
            } else
            {
                Log.d("asd", "wrroooonggggggggg");
            }
        }
    }
    return phoneNumber;
}
下面是它的用法:

如果您使用

public static String filterPhoneNumber(String phoneNumber) {
  return phoneNumber.replaceAll(" ","");
}
它起作用了

  • 字符数组的类型应为
    char[]
  • 字符数组从未初始化,因此
    characters[i]!=''
    始终为true(如果您修复了数组类型,则else应抛出
    NullPointerException
  • 您分配了
    characters[i]=phoneNumber.charAt(i)
    ,但之后再也没有读过
  • 如果您的目标是删除空间,请执行以下操作:

    char[] characters = new char[phoneNumber.length()];
    
    工作100%

    public static String filterPhoneNumber(String phoneNumber) {
        return phoneNumber.replaceAll(" ", "");
    }
    
    公共静态字符串过滤器phoneNumber(字符串电话号码){
    byte[]number=phoneNumber.getBytes();
    字节[]数组=新字节[phoneNumber.length()];
    整数计数=0;
    for(int i=0;i
    算法会产生关键的调用错误
    请解释。我想你想要
    I
    …我无法想象它是如何使用的他们!很高兴了解runnable.com。我第一次看到它。我投你的票:)没用。第一个空格被删除了,但第二个空格和其他空格被删除了。新的问题是当字符串中有两个或更多空字符时,它只删除第一个。为什么不建议他使用正则表达式而不是迭代来理解他做错了什么。因为他的代码中的变量“i”不应该以与他递增arg字符串相同的步幅递增。这就是为什么我把“计数”放在我的代码中,我们应该努力遵守最佳实践,而不是跟随别人。他迭代一个数组来替换空间,我们可以使用正则表达式。
    public static String filterPhoneNumber(String phoneNumber) {
    
        byte[] number = phoneNumber.getBytes();
        byte[] array = new byte[phoneNumber.length()];
        int count=0;
    
        for (int i = 0; i < number.length; i++){
            if (number[i] != ' '){
                array[count++] = number[i];
            }
        }
        return new String(array);
    }
    
    public static void main(String[] args) {
        String res = filterPhoneNumber("   +28  23");
        System.out.println(res); //OUTPUT "+2823"
    }