为了账号安全,请及时绑定邮箱和手机立即绑定

返回满足条件的所有字符串值

返回满足条件的所有字符串值

白衣非少年 2022-09-01 16:36:41
不知道如何设置此方法,该方法获取字符串数组作为参数,并且必须在新数组中返回满足以下条件的所有值:数组的每个元素中25%的字符是数字;public static String[] returnSentence(String[] str){    int nrOfWords = str.length;    int count = 0;    for(int i = 0; i < nrOfWords; i++){        for(int j = 0; j < str[i].length; j++){        }    }}我有一个想法,它应该是这样的东西,但不能格式化代码来测试条件......
查看完整描述

3 回答

?
慕的地10843

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),然后返回结果的长度(数字字符数)。


一旦你有了符合你条件的字符数,计算百分比就变得微不足道了。


查看完整回答
反对 回复 2022-09-01
?
MMTTMM

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);

}


查看完整回答
反对 回复 2022-09-01
?
一只甜甜圈

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++;

       }



    }

}

}


查看完整回答
反对 回复 2022-09-01
  • 3 回答
  • 0 关注
  • 150 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号