4 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超6個(gè)贊
您可以嘗試在您的方法中進(jìn)行以下更改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)將得到一個(gè)單字母單詞,并將幫助您按照您想要的方式計(jì)算分?jǐn)?shù)。

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超21個(gè)贊
如果你想讓它變得非常簡(jiǎn)單,你可以使用String.toCharArray()然后遍歷數(shù)組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語句,因?yàn)槟侵皇菍⒅翟O(shè)置為0循環(huán)中是否有其他字母。我想你打算讓它points += 0什么都不做,所以它可以被刪除。
示例運(yùn)行:
輸入:
字串 = "LDWWL";
輸出:
7
注意: 我知道您可能不允許使用此解決方案,但我認(rèn)為這將是有關(guān)可能性的好信息,因?yàn)樗诩夹g(shù)上不使用charAt()
另外我想指出你誤解了什么substring(5)。這將返回位置之后的所有字符5作為單個(gè)String,它不會(huì)將分隔成String不同的字符或任何東西。

TA貢獻(xiàn)2041條經(jīng)驗(yàn) 獲得超4個(gè)贊
你會(huì)發(fā)現(xiàn)你的可變字母始終是空字符串。這是一種更好的做事方式:
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();
}
}

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超7個(gè)贊
假設(shè)您的字符串代表最近 5 場(chǎng)比賽的足球隊(duì)表現(xiàn),您可以使用以下內(nèi)容使其簡(jiǎn)單易讀:
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();
}
這會(huì)將您的示例輸入“LDWWL”轉(zhuǎn)換為“01330”,并通過獲取其數(shù)值對(duì)每個(gè)字符求和。
添加回答
舉報(bào)