【发布时间】:2015-04-05 19:21:07
【问题描述】:
程序要求输入字符串,然后输入最小字长。 如果单词小于最小字长,则不计算在内。 我试图在不使用 split() 或其他所有帖子所说的解决这些问题的情况下执行该程序。
我想也许我必须检查第一个单词,最后一个单词,然后是中间的单词。但我遇到了麻烦。我在这上面花了太长时间,我想不通。
IO 是用于输入、输出等的不同类。
public class WordCount {
public static void main(String[] args) {
int minLength;
System.out.println("Enter a string.");
String string=IO.readString();
String str1=string.toLowerCase(); //changes all characters in the string to lower case
String str=str1.trim(); //Trims all spaces in the end.
System.out.println("Enter minimum length for each word.");
minLength=IO.readInt();
int num=wordCount(str, minLength);
IO.outputIntAnswer(num);
}
public static int wordCount(String str, int minLength){ //Method that counts words.
int count=0;
// First Word
for(int i=0;i<str.length();i++){
if (str.charAt(i)==' '){
String firstWord=str.substring(0,i);
if (firstWord.length()>=minLength){
count++;
}
}
}
// Last Word
for (int i=str.length()-1;i>0;i--){
if(str.charAt(i)==' '){
String lastWord=str.substring(i, str.length()-1);
if(lastWord.length()>=minLength){
count++;
}
for (int j=0; j<i;j++){ //An attempt to find other words in between..does not work
if(str.charAt(j)==' '){
String word=str.substring(j+1, str.indexOf(' ', j+1));
if(word.length()>=minLength){
count++;
}
}
}
}
}
return count;
}
}
【问题讨论】:
-
在
=和==和+、-、*、>、<、/和逗号之后的两边各留一个空格在{之前和;'之后。当代码像这样被挤在一起时,看起来很俗气且难以阅读。难以维护。我在一个内核小组工作,在那里你不仅不允许将代码放入格式错误的存储库中,而且即使尝试也会遇到麻烦。查找 C 美化器和格式化程序。你不会找到一个单一的标准来说明你所做的事情在更广泛的社区中是可以接受的。如果您想要一份工作,请学习格式化它。 -
Checkout AStyle 其实你想要一个面向 Java 的等价物,但格式基本相同
-
让我们从您不想使用
split()或听取之前答案中给出的任何建议开始。 -
您还可以使用 Java 的
java.util.regex.*类,例如Pattern和Matcher来执行此操作,而且效率更高。这些是值得花时间掌握的,因为从长远来看,它们会为你节省大量时间。
标签: java