字符串在循环中变得混乱

3z6pesqy  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(262)

所以伙计们,我做了一个程序来计算一个给定的句子有多少个单词和字母。例如,如果我的输入是“stack overflow”,它将返回2个单词和13个字母。但我一直有一个问题,阅读单一的字母,也包含在另一个词在句子中。例如,输入“a alex”返回2个单词和4个字母,而它应该返回5个字母。。。我注意到,当它读到第一个“a”时,第二个字符串“alex”出于某种原因变成了“lex”,但我不知道如何解决它。。。这是片段,提前告诉你!

package Uri;
import java.util.Scanner;
import java.lang.Math;
import java.lang.StringBuilder;

public class Facil{
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        while(sc.hasNext()){

            String lida=sc.nextLine();

            int letras=0, palavras=0;

            while(lida != ""){

                System.out.println("current sentence = " + lida);

                if (lida.charAt(0) == ' ') {
                    lida = lida.replaceFirst(" ", "");
                    continue;
                }
                if (!lida.contains(" ")) {
                    palavras++;
                    letras+=lida.length();
                    System.out.println("quantity of added letters = " + lida.length());
                    break;
                }

                String separada = lida.substring(0,lida.indexOf(" "));
                System.out.println("separated word = " + separada);

                if (!separada.contains("..") && separada.endsWith(".") || !separada.contains(".")){
                    palavras++;
                    letras+=separada.length();
                    lida = lida.replace(separada, "");
                    System.out.println("added letters = " + separada.length());

                } 
            }
            System.out.println("\n RESULT: ");
            System.out.println("quantity of words = " + palavras);
            System.out.println("quantity of letters = " + letras);

        }
    }
}
8fsztsew

8fsztsew1#

你的问题来自 lida = lida.replace(separada, ""); 将“a”替换为空格
用这个怎么样 lida.split(" ") 然后得到字数数组的长度?对于每个单词,使用 String.length() 数数字母?

相关问题