2013-04-15 3 views
-3

Когда пользователь вводит более одного места, моя программа неправильно печатает имя пользователя. Например, если пользователь вводит свое имя, а затем 2 пробела, а затем их фамилию, моя программа предполагает, что эти дополнительные пробелы являются средним именем и печатают среднее имя как пробелы и фамилию в качестве введенной второй строки, хотя введены только две строки. Как я могу улучшить эту проблему, так что лишнее пространство, которое пользователь может ввести, не считается средним или фамильным?Разбрать имя без пробелов?

public static void main(String[] args) 
{ 
    Scanner sc = new Scanner(System.in); 

    System.out.println("Welcome to the name parser.\n"); 
    System.out.print("Enter a name: "); 
    String name = sc.nextLine(); 

    name = name.trim(); 

    int startSpace = name.indexOf(" "); 
    int endSpace = name.indexOflast(" "); 
    String firstName = ""; 
    String middleName = ""; 
    String lastName = ""; 

    if(startSpace >= 0) 
    { 
     firstName = name.substring(0, startSpace); 
     if(endSpace > startSpace) 
     { 
      middleName = name.substring(startSpace + 1, endSpace); 
     } 
     lastName = name.substring(endSpace + 1, name.length()); 
    } 
    System.out.println("First Name: " + firstName); 
    System.out.println("Middle Name: " + middleName); 
    System.out.println("Last Name: " + lastName); 
} 

Выход: джо                 марка

First name: joe 
Middle name: // This shouldn't print but because the user enter extra spaces after first name the spaces becomes the middle name. 
Last name: mark 
+6

Почему вы задали тот же вопрос второй раз сегодня? – piokuc

+0

его не то же самое – user2264244

+0

Вы уточните? Я не смог увидеть существенных различий. –

ответ

3

Попробуйте

// replaceAll needs regex so "\\s+" (for whitespaces) 
// s+ look for one or more whitespaces 
// replaceAll will replace those whitespaces with single whitespace. 
// trim will remove leading and trailing whitespaces 

name = name.trim().replaceAll("\\s+", " "); 

1. Java Regex

2. replaceAll API

+4

Вы должны объяснить, что это делает. –

+0

@MattBall Просто делал это. Спасибо, в любом случае. – Smit

Смежные вопросы