猿问

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

我一直在尝试创建一种算法,每个字母都会加分。我不想使用 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;

    }

}


MM们
浏览 124回答 4
4回答

肥皂起泡泡

您可以尝试在您的方法中进行以下更改public static int getMatchPoints(String word):for (int i = 0; i < word.length(); i++) {&nbsp; &nbsp; String letter = word.substring(i, i + 1);&nbsp; &nbsp; if (letter.equals("W")) {&nbsp; &nbsp; &nbsp; &nbsp; points+=3;&nbsp; &nbsp; }&nbsp; &nbsp; else if (letter.equals("D")) {&nbsp; &nbsp; &nbsp; &nbsp; points+=1;&nbsp; &nbsp; }}word.substring(i, i + 1)将得到一个单字母单词,并将帮助您按照您想要的方式计算分数。

茅侃侃

如果你想让它变得非常简单,你可以使用String.toCharArray()然后遍历数组char并检查它的值:public static int getMatchPoints(String word) {&nbsp; &nbsp; int points = 0;&nbsp; &nbsp; char[] arr = word.toCharArray();&nbsp; &nbsp; for (char letter : arr) {&nbsp; &nbsp; &nbsp; &nbsp; if (letter == 'W') {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; points += 3;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; else if (letter == 'D') {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; points += 1;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; return points;}我还删除了您的else语句,因为那只是将值设置为0循环中是否有其他字母。我想你打算让它points += 0什么都不做,所以它可以被删除。示例运行:输入:字串 = "LDWWL";输出:7注意: 我知道您可能不允许使用此解决方案,但我认为这将是有关可能性的好信息,因为它在技术上不使用charAt()另外我想指出你误解了什么substring(5)。这将返回位置之后的所有字符5作为单个String,它不会将分隔成String不同的字符或任何东西。

缥缈止盈

你会发现你的可变字母始终是空字符串。这是一种更好的做事方式:class WDLPoints{&nbsp; public static void main(String[] args)&nbsp; {&nbsp; &nbsp; String word = "LDWWL";&nbsp; &nbsp; System.out.println(getMatchPoints(word));&nbsp; }&nbsp; // We have only one method to encode character values, all in one place&nbsp; public static int getValueForChar(int c)&nbsp; {&nbsp; &nbsp; switch((char)c)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; case 'W': return 3;&nbsp; &nbsp; &nbsp; case 'D': return 1;&nbsp; &nbsp; &nbsp; default: return 0; //all non-'W's and non-'D's are worth nothing&nbsp; &nbsp; }&nbsp; }&nbsp; public static int getMatchPoints(String word)&nbsp; {&nbsp; &nbsp; // for all the characters in the word&nbsp; &nbsp; return word.chars()&nbsp; &nbsp; // get their integer values&nbsp; &nbsp; &nbsp; .map(WDLPoints::getValueForChar)&nbsp; &nbsp; // and sum all the values&nbsp; &nbsp; &nbsp; .sum();&nbsp; }}

长风秋雁

假设您的字符串代表最近 5 场比赛的足球队表现,您可以使用以下内容使其简单易读:public static int getMatchPoints(String word) {&nbsp; &nbsp; String converted = word.replace('W', '3').replace('D', '1').replace('L', '0');&nbsp; &nbsp; return converted.chars().map(Character::getNumericValue).sum();}这会将您的示例输入“LDWWL”转换为“01330”,并通过获取其数值对每个字符求和。
随时随地看视频慕课网APP

相关分类

Java
我要回答