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

如何获取每个字母并使用子字符串方法将它们添加为点

如何获取每个字母并使用子字符串方法将它们添加为点

MM们 2023-05-17 17:32:40
我一直在尝试创建一种算法,每个字母都会加分。我不想使用 charAt,我想使用 substring 方法。我的问题是 String letter 似乎没有得到每个字母,结果总是 0。有没有办法获取每个字母并将其转换为积分?public class WDLPoints{    public static void main(String[] args){        String word = "LDWWL";        System.out.println(getMatchPoints(word));    }    public static int getMatchPoints(String word) {        int points = 0;        String letter = word.substring(5);        for (int i = 0; i < word.length(); i++) {        if (letter.equals("W")) {            points+=3;        }        else if (letter.equals("D")) {            points+=1;        }        else {            points = 0;        }        }        return points;    }}
查看完整描述

4 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

您可以尝试在您的方法中进行以下更改public static int getMatchPoints(String word):


for (int i = 0; i < word.length(); i++) {

    String letter = word.substring(i, i + 1);

    if (letter.equals("W")) {

        points+=3;

    }

    else if (letter.equals("D")) {

        points+=1;

    }

}

word.substring(i, i + 1)将得到一个单字母单词,并将帮助您按照您想要的方式计算分数。


查看完整回答
反对 回复 2023-05-17
?
茅侃侃

TA贡献1842条经验 获得超21个赞

如果你想让它变得非常简单,你可以使用String.toCharArray()然后遍历数组char并检查它的值:


public static int getMatchPoints(String word) {

    int points = 0;

    char[] arr = word.toCharArray();

    for (char letter : arr) {

        if (letter == 'W') {

            points += 3;

        }

        else if (letter == 'D') {

            points += 1;

        }

    }

    return points;

}

我还删除了您的else语句,因为那只是将值设置为0循环中是否有其他字母。我想你打算让它points += 0什么都不做,所以它可以被删除。


示例运行:


输入:


字串 = "LDWWL";


输出:


7


注意: 我知道您可能不允许使用此解决方案,但我认为这将是有关可能性的好信息,因为它在技术上不使用charAt()


另外我想指出你误解了什么substring(5)。这将返回位置之后的所有字符5作为单个String,它不会将分隔成String不同的字符或任何东西。


查看完整回答
反对 回复 2023-05-17
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

你会发现你的可变字母始终是空字符串。这是一种更好的做事方式:


class WDLPoints

{

  public static void main(String[] args)

  {

    String word = "LDWWL";

    System.out.println(getMatchPoints(word));

  }

  // We have only one method to encode character values, all in one place

  public static int getValueForChar(int c)

  {

    switch((char)c)

    {

      case 'W': return 3;

      case 'D': return 1;

      default: return 0; //all non-'W's and non-'D's are worth nothing

    }

  }


  public static int getMatchPoints(String word)

  {

    // for all the characters in the word

    return word.chars()

    // get their integer values

      .map(WDLPoints::getValueForChar)

    // and sum all the values

      .sum();

  }

}


查看完整回答
反对 回复 2023-05-17
?
长风秋雁

TA贡献1757条经验 获得超7个赞

假设您的字符串代表最近 5 场比赛的足球队表现,您可以使用以下内容使其简单易读:


public static int getMatchPoints(String word) {

    String converted = word.replace('W', '3').replace('D', '1').replace('L', '0');

    return converted.chars().map(Character::getNumericValue).sum();

}

这会将您的示例输入“LDWWL”转换为“01330”,并通过获取其数值对每个字符求和。


查看完整回答
反对 回复 2023-05-17
  • 4 回答
  • 0 关注
  • 123 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信