第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

使用 Scanner 在 for 循環(huán)中逐字母分析字符串

使用 Scanner 在 for 循環(huán)中逐字母分析字符串

白衣非少年 2022-01-12 16:09:16
我需要計算一個字母在字符串中出現(xiàn)的頻率。為此,我考慮使用掃描儀對象,將字符串傳遞給它掃描儀 s = 新的掃描儀(字符串)并使用 next() 方法通過 switch 語句分析每個字符。我已經(jīng)在這些板上進行了搜索,并設(shè)計了以下內(nèi)容:-for (int i = 0; i < outputString.length(); i++) {    Scanner s = new Scanner(outputString);    char letter = s.next().charAt(i);    switch (letter) {    switch code;}當(dāng)我正在分析的字符串包含除空格之外的任何內(nèi)容(-_z1 等)時,這似乎有效,這將導(dǎo)致程序拋出 String.IndexOutOfBoundException (4)。還有什么我可以嘗試的,或者我應(yīng)該從單詞中刪除所有空格(即我正在考慮通過使用for循環(huán)創(chuàng)建一個新單詞字符串來添加每個string.charAt(i)!='')。編輯:我忘記了掃描儀在 for 循環(huán)中,我將其取出。其次,不確定它是否會發(fā)生變化,但我正在嘗試計算字符串中字母表中每個字母出現(xiàn)的次數(shù),而不僅僅是一種類型的字母。感謝您的意見!提前致謝,
查看完整描述

3 回答

?
素胚勾勒不出你

TA貢獻1827條經(jīng)驗 獲得超9個贊

我強烈認為您使用這種方法會使事情復(fù)雜化。您可以簡單地將字符串(以及您正在搜索的字符)傳遞給一個方法,如下所示:


public int checkFreq(char letter, String word){

    int freq = 0;


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

        if((word.charAt(i)) == letter){

            freq++;

        }

    }


    return freq;

}

我希望這會有所幫助.. 編碼愉快!


查看完整回答
反對 回復(fù) 2022-01-12
?
臨摹微笑

TA貢獻1982條經(jīng)驗 獲得超2個贊

首先,new Scanner當(dāng)你準(zhǔn)備好下一個角色時,你不應(yīng)該每次都創(chuàng)建。只做一次,之前for loop。


第二- 要逐個字符讀取掃描儀,您已設(shè)置delimeter為"". 在這種情況下,scan.next()返回下一個字符。


第三- 你Scanner用來分析字符串,沒關(guān)系(不是最佳和開銷,但沒關(guān)系)。然后創(chuàng)建新的Scanner實例并依賴它的數(shù)據(jù),但不依賴于被治理字符串的長度;使用Scanner.hasNext()方法。我的意思是,您所需要的只是添加hasNext()以確保掃描儀的流中存在更多字符:


try (Scanner scan = new Scanner(outputString)) {

    scan.useDelimiter("");  // to make scan.next() return one single character


    while (scan.hasNext()) {

        char ch = scan.next().charAt(0);    // next() returns String with one character

        // do your work

    }

}

PS這是代碼示例,如何用不同的方式計算給定字符串中的字符頻率。您可能會發(fā)現(xiàn)其中之一與您的任務(wù)更相關(guān)。


// this is your approach

public static int characterFrequency(String str, char ch) {

    try (Scanner scan = new Scanner(str)) {

        scan.useDelimiter("");

        int count = 0;


        while (scan.hasNext())

            count += scan.next().charAt(0) == ch ? 1 : 0;


        return count;

    }

}


// this one is the most efficient

public static int characterFrequency(String str, char ch) {

    int count = 0;


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

        count += str.charAt(i) == ch ? 1 : 0;


    return count;

}


// this one is the smallest of code

public static int characterFrequency(String str, char ch) {

    return (int)str.chars().filter(e -> e == ch).count();

}


查看完整回答
反對 回復(fù) 2022-01-12
?
慕的地8271018

TA貢獻1796條經(jīng)驗 獲得超4個贊

您應(yīng)該按照上述解決方案獲取字符串中的重復(fù)字符。但是,我只會提示您為什么會遇到異常


考慮以下代碼:


String outputString = "Pre ";

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

      Scanner s = new Scanner(outputString);

      System.out.println(outputString.length()); // output is 4

      System.out.println(s.next().length()); //output is 3, not considering the space

      //char letter = s.next().charAt(i);

      //System.out.println(letter);

  }


查看完整回答
反對 回復(fù) 2022-01-12
  • 3 回答
  • 0 關(guān)注
  • 205 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號