看一个指数是否是否定的

时间:2016-02-26 04:45:22

标签: java string indexof

我正在为我的结构化编程类编写一个程序,我们必须获取一个输入字符串,将其分成3个子字符串,然后检查是否所有三个名称都在那里。我在空格处打破了字符串,现在我只需要检查是否有三个空格。我的教授告诉我们,我们必须确保每个名字之间有一个空格。他告诉我只是测试空格字符的索引是否为-1,因为如果它不是那个空间。我只是找不到一种方法来测试它而不会得到“字符串索引超出范围”错误。任何帮助将非常感激。这是我用来测试输入字符串的代码。

System.out.println("Enter filer full name (First Middle Last):");
        Scanner input = new Scanner(System.in);
            String fullName = input.nextLine();
                int n = fullName.indexOf(' ');
                int m = fullName.indexOf(' ', n + 1);
                    String firstName = fullName.substring(0, n);
                    String middleName = fullName.substring(n + 1, m);
                    String lastName = fullName.substring(m + 1);

5 个答案:

答案 0 :(得分:2)

在您获取子字符串之前,请使用if(n >-1 && m > -1)来判断您是否有空格。您的新代码看起来像这样

System.out.println("Enter filer full name (First Middle Last):");
Scanner input = new Scanner(System.in);
String fullName = input.nextLine();
int n = fullName.indexOf(' ');
int m = fullName.indexOf(' ', n + 1);
if(n>-1&&m>-1){
    String firstName = fullName.substring(0, n);
    String middleName = fullName.substring(n + 1, m);
    String lastName = fullName.substring(m + 1);
}else{
    System.out.println("Don't have spaces!");
}

答案 1 :(得分:1)

如果输入未包含在String中,则

$scope返回负数。此外,String索引从零开始。所以要测试它你会做这样的事情:

indexOf

答案 2 :(得分:1)

如何使用拆分

 String fullname = "Scary Old Wombat";
 String [] names = fullname.split (" ");

 assert (names.length == 3);

答案 3 :(得分:1)

您可以使用indexOf()方法。

例如:

if(fullName.indexOf(' ') == -1){ // index of space is -1, means space is not present }

答案 4 :(得分:0)

某些名称可能有也可能没有John Doe中的中间名,而某些名称的中间名可能包含2 John Smith Williams Joseph Doe以上的名称。
因此你可以试试这个!

System.out.println("Enter filer full name (First Middle Last):");
Scanner input = new Scanner(System.in);
String fullName = input.nextLine();
String name [] = fullName.split(" ");
if(name.length == 1) {
    System.out.println("You don't have spaces in the name");
}
else
   if(name.length == 2) {
     System.out.println("First Name: " + name[0]);
     System.out.println("Last Name: " + name[1]);
}else
    if(name.length > 2) {
     System.out.println("First Name: " + name[0]);
     System.out.print("Middle Name: ");
       for (int i = 1; i < (name.length-1) ; i++) {
            System.out.print(name[i] + " ");
       }
     System.out.println();
     System.out.println("Last Name: " + name[(name.length-1)]);
}


输出 -

Enter filer full name (First Middle Last): John Smith Williams Joseph Doe First Name: John Middle Name: Smith Williams Joseph Last Name: Doe