英文:
Strings getting messed up within the loop
问题
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.equals("")){
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);
}
}
}
英文:
So guys, I've made a program that counts how many words and letters a given sentence has. For instance, if my input is "stack overflow", it would return 2 WORDS and 13 LETTERS. But I've been having a problem to read single letters that are also contained in another word within the sentence. For example, the input "a alex" has been returning me 2 words and 4 LETTERS, when it should be returning 5 letters... I noticed that, as soon as it reads the first "a", the second string "alex" becomes "lex" for some reason, but I don't know how to solve it... here's the snippet, thx in advance!
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);
}
}
}
答案1
得分: 0
你的问题出在 lida = lida.replace(separada, "");
这一行,你在这里将 'a' 替换为空格。
要不考虑使用 lida.split(" ")
,然后获取数组的长度以获得单词数?对于每个单词,使用 String.length()
来计算字母数呢?
英文:
Your problem comes from lida = lida.replace(separada, "");
where you replace 'a' with space
How about using lida.split(" ")
then get the length of the array for the number of words? And for each word, use String.length()
to count for the letters?
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论