Java 为什么我们在这里(int)和(space)一起使用?

Java 为什么我们在这里(int)和(space)一起使用?,java,string,Java,String,这里有所有的代码 int lastSpace = fullName.lastIndexOf(" "); 还有为什么我们使用(+1) 这里 因为空格将firstName和lastName分开 输入应该看起来像“firstName lastName”。如果从中获取“”空格的位置,“lastName”部分从下一个字符开始,因此+1到获取子字符串的位置。在Java中,索引从0开始。 例如: String lastName = fullName.substring(lastSpace + 1); 空格

这里有所有的代码

int lastSpace = fullName.lastIndexOf(" ");
还有为什么我们使用(+1) 这里


因为空格将firstName和lastName分开


输入应该看起来像“firstName lastName”。如果从中获取“”空格的位置,“lastName”部分从下一个字符开始,因此+1到获取子字符串的位置。

在Java中,索引从0开始。
例如:

String lastName = fullName.substring(lastSpace + 1);
空格分隔名字和姓氏。 因此,
0到索引[“”]-1
是名字
索引[“”]+1 to length()
是第二个名称


希望现在清楚。

这里的全名由名字和姓氏组成,此代码搜索第一个空格,以便将名字和姓氏分开
但是我建议允许用户同时输入姓和名,而不是全名,因为不可能知道有多少单词组成了名和姓的相同部分。

正如@0x01所提到的,您可以得到空格的索引,但是在姓氏中,从索引+1的位置开始,这就是原因,检查一下这个输出

String name = "Moataz Mohamed";
name[0]='M';
name[1]='o'; 
...
name[6]=' '; //Space
输出如下所示:

{...}
    public static final String NAME1 = "Julian Papadopulos";
    public static final String NAME2 = "John von Bahnhof";

    public static final char SPLITCHAR = ' ';
{...}
public static void splitNamesBySpaceIndex() {
        // name1
        int firstSpace = NAME1.indexOf(" ");
        int lastSpace = NAME1.lastIndexOf(" ");

        String firstName = NAME1.substring(0, firstSpace);
        String lastName = NAME1.substring(lastSpace + 1);
        System.out.println("lastname: \'" + lastName + "\', firstname: \'" + firstName + "\'");

        lastName = NAME1.substring(lastSpace);
        System.out.println("lastname: \'" + lastName + "\', firstname: \'" + firstName + "\'");
    }
如您所见,在第二种情况下,您将解析姓氏,如
“Papadopulos”
,这是不正确的,其原因是将开始索引作为空间的索引-这就是您需要索引+1的位置的原因

lastname: 'Papadopulos', firstname: 'Julian'
lastname: ' Papadopulos', firstname: 'Julian'
lastname: 'Papadopulos', firstname: 'Julian'
lastname: ' Papadopulos', firstname: 'Julian'
This is like this...

FIRSTNAME LASTNAME
012345678901234567

FIRSTNAME Starts from 0 
Index of " " is 9 
LASTNAME Starts from 10 

That is why you need to add (+1) here 
indexOf(" ") {9} but you have to start with LASTNAME which is at 10
If you do not add (+1) then Output will be " LASTNAME"