3 回答

TA贡献1785条经验 获得超8个赞
你的问题基本上可以归结为弄清楚字符串中有多少个字符完整地填充了给定的条件,有多少字符没有。
有两种方法可以做到这一点:
1)简单地计算字符:
int numPositiveChars = 0;
int numNegativeChars = 0;
for (int i = 0; i < s.length(); i++){
char c = s.charAt(i);
if (/*check c here*/)
numPositiveChars++;
else
numNegativeChars++;
}
实际上,您甚至不需要计算负字符,因为该值只是。s.length() - numPositiveChars
2)另一种方法是使用正则表达式,例如通过删除所有非数字字符,然后获取字符计数:
int numPositiveChars = s.replaceAll("[^0-9]+", "").length();
此行将从 String 中删除所有非数字字符(不是 0-9),然后返回结果的长度(数字字符数)。
一旦你有了符合你条件的字符数,计算百分比就变得微不足道了。

TA贡献1869条经验 获得超4个赞
您只需要替换每个元素中的所有非数字,然后像这样比较长度:
public static List<String> returnSentence(String[] str) {
int nrOfWords = str.length;
List<String> result = new ArrayList<>();
for (int i = 0; i < nrOfWords; i++) {
if(str[i].replaceAll("\\D", "").length() == str[i].length() * 0.25){
result.add(str[i]);
}
}
return result; // If you want an array use : return result.toArray(String[]::new);
}
我也会使用List而不是数组作为结果,因为你不知道有多少元素是尊重条件的。
如果你想用流媒体解决,它可以更容易:
public static String[] returnSentence(String[] str) {
return Arrays.stream(str)
.filter(s-> s.replaceAll("\\D", "").length() == s.length() * 0.25)
.toArray(String[]::new);
}

TA贡献1836条经验 获得超5个赞
像这样的东西
public static String[] returnSentence(String[] str){
int nrOfWords= str.length;
String[] temp_Str = new String[20];
int count = 0;
int k=0;
for(int i = 0;i<nrOfWords;i++){
for(int j = 0;j<str[i].length;j++){
if(Character.isAlphabetic(str[i].getcharat(j)))
{
count++;
}
if((count/100.0)*100>=25)
{ temp_Str[k]=str[i];
k++;
}
}
}
}
添加回答
举报