所以我正在编写一个程序,一次接收三个扫描仪输入并计算字符串中的所有空格,然后返回总计。 (扫描仪输入是通过另一个类中的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;
}
}
有没有更有效的方法来解决这个问题?
答案 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语句在删除空格后打印长度
它们之间的第三个差异即总白色空间