亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何獲取每個字母并使用子字符串方法將它們添加為點

如何獲取每個字母并使用子字符串方法將它們添加為點

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 關注
  • 195 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號