我的代码采用多个字符串并计算空格

时间:2017-09-20 01:18:19

标签: java whitespace

所以我正在编写一个程序,一次接收三个扫描仪输入并计算字符串中的所有空格,然后返回总计。 (扫描仪输入是通过另一个类中的JUnit中的测试用例预先确定的。)

这是我目前的代码,我不确定我哪里出错了。

public static int findMostWhitespace (Scanner scn)
{
    String[] array = new String[3];
    for (int i = 0; i < array.length; i++) {
        array[i] = scn.nextLine();
    }
    String input = array[0];
    int spaces = 0;
    for (int i = 0; i < input.length(); i++) {
        if (Character.isWhitespace(input.charAt(i)))
            spaces++;
        }
        String input2 = array[1];
        for (int i = 0; i < input2.length(); i++) {
            if (Character.isWhitespace(input2.charAt(i)))
                spaces++;
        }
        String input3 = array[2];
        for (int i = 0; i < input3.length(); i++) {
            if (Character.isWhitespace(input3.charAt(i)))
                spaces++;
        }
        return spaces;
    }        
}

有没有更有效的方法来解决这个问题?

3 个答案:

答案 0 :(得分:1)

只需使用replace来替换空格并计算长度差异

dispatch

答案 1 :(得分:0)

首先,删除重复的代码。

public static int findMostWhitespace (Scanner scn)
    {
        int spaces = 0;
        String input;
        for (int j = 0; j < 3; j++) {
            input = scn.nextLine();
            for (int i = 0; i < input.length(); i++) {
                if (Character.isWhitespace(input.charAt(i)))
                    spaces++;
            }
        }
        return spaces;
    }    

答案 2 :(得分:0)

这里是逻辑

public class MyClass {
    public static void main(String args[]) {

    String s1="hello    world hi";
    System.out.println(s1.length());
    String s2=s1.replaceAll("\\s+","");
    System.out.println(s2.length());
    int count =s1.length()-s2.length();
    System.out.println("White Space "+count);


    }
}

它还可以通过使用\\s+替换全部来计算重复空间 输出是

17
12
White Space 5

解释 第一个print语句打印总长度

第二个print语句在删除空格后打印长度

它们之间的第三个差异即总白色空间