我对编程很陌生,我正在编写此代码以在遇到空格时将字符串(长度)计算为一点。目的是-当用户输入他/她的名字和姓氏时,程序应将名字和姓氏分开,并计算名字(和姓氏)中有多少个字母/字符。

如果我输入两个用空格隔开的字符串(名称和姓氏),我的代码似乎无法达到/执行“ if语句”(输出:您的名字是:(空空格),并且有0个字母)。我只输入一个字符串,即if语句,它将被执行。

我做错了什么?

我的示例代码:

public class Initials {

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    String nameAndSurname, nameOnly;
    int c = 0, count = 0;
    System.out.println("Enter your full name please:");
    nameAndSurname = scan.nextLine();
    int space = nameAndSurname.indexOf(' ');
    for(int x = 0; x<=nameAndSurname.length()-1; x++) {
        c++;
        if(nameAndSurname.indexOf(x) == space) //if there is a space
        {
            count = c; //how many characters/letters was there before space
            System.out.println(count);
        }
    }
    nameOnly = nameAndSurname.substring(0, count);
    System.out.println("Your name is: " + nameOnly.toUpperCase() + " and it has " + count + " letters");
    scan.close();
}

最佳答案

为什么要打扰所有这些代码?只需跳过for循环,

if (space != -1) nameOnly = nameAndSurname.substring(0,space);

如果您真的想知道字母的数量,那就是
空格+1

不需要所有这些复杂的东西。

10-05 18:57