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

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

只打印給定字符串中的 3 個連續字符

只打印給定字符串中的 3 個連續字符

一只斗牛犬 2021-06-28 13:14:50
如果輸入是,我只想從給定的字符串中打印 3 個相同的連續字符,如下所示:"aasssfddddvvv"那么我應該得到輸出作為輸出:sssvvv count=2這是我的要求,請幫助我。我的代碼:import java.util.Scanner;class Test {    public static void main(String args[]) {        Scanner scan = new Scanner(System.in);        System.out.println("Enter the String: ");        char s[] = scan.nextLine().toCharArray();        for (int i = 0; i < s.length - 1; i++) {            if (s[i] == s[i + 1] && s[i] == s[i + 2] && s[i] == s[i + 3]) {                System.out.println(s[i]);            }        }        scan.close();    }}
查看完整描述

3 回答

?
白衣染霜花

TA貢獻1796條經驗 獲得超10個贊

這個答案與 OP 中使用的更手動的方法背道而馳。但是,這在 Java 中使用正則表達式模式匹配器處理起來相當簡單。我們可以在模式上進行匹配(.)\\2*,以捕獲所有相似字母的組。然后,只需打印出僅作為 3 出現的組。


String line = "aasssfddddvvv";

String pattern = "((.)\\2*)";

Pattern r = Pattern.compile(pattern);

Matcher m = r.matcher(line);


while (m.find()) {

    if (m.group(1).length() == 3) {

        System.out.println(m.group(1));

    }

}


sss

vvv


查看完整回答
反對 回復 2021-06-30
?
www說

TA貢獻1775條經驗 獲得超8個贊

第一個問題是,你試圖達到陣列的lenght + 2指數為這是不可能的。


假設字符串長度為 5


0:  0 1 2

1:  1 2 3

2:  2 3 4

3:  3 4 (5)

4:  4 **(5) (6)**

如您所見,您嘗試達到5,它不是字符串的一部分。所以試試


for (int i = 0; i < s.length - 2; i++)

代替


for (int i = 0; i < s.length - 1; i++)

提示:您可以從錯誤中獲取此信息。


線程“main”中的異常 java.lang.ArrayIndexOutOfBoundsException: 13


它說你試圖達到你不能達到的索引。


第二個問題,您在 if 條件下檢查 4 個字符。用:


if (s[i] == s[i + 1] && s[i] == s[i + 2])

代替


if (s[i] == s[i + 1] && s[i] == s[i + 2] && s[i] == s[i + 3])


查看完整回答
反對 回復 2021-06-30
  • 3 回答
  • 0 關注
  • 216 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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