2014-05-15 176 views
0

對於該程序,它要求用戶輸入其全名。然後通過在第一個姓氏和第二個姓氏之間放置的空間分隔出第一個姓氏和第一個姓氏。但是,indexOf()不能識別空間,只返回-1。這是爲什麼?謝謝。爲什麼indexOf()不能識別空格?

這裏是及時關閉PracticeIt的:

編寫一個叫做processName方法接受控制檯作爲參數掃描儀和提示用戶輸入他或她的全名,然後打印反向名稱訂單(即姓氏,名字)。你可能會認爲只會給出第一個和最後一個名字。您應該使用掃描儀一次讀取整行輸入,然後根據需要將其分開。下面是與用戶的樣本對話:

請輸入您的全名:薩米Jankis

你按相反的順序名字是Jankis,薩米

import java.util.*; 

public class Exercise15 { 

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

} 

public static void processName(Scanner inputScanner) { 
    System.out.print("Please enter your full name: "); 
    String fullName = inputScanner.next(); 

    int space = fullName.indexOf(" "); // always return -1 for spaces 
    int length = fullName.length(); 

    String lastName = fullName.substring(space+1,length+1); 
    String firstname = fullName.substring(0, space); 

    System.out.print("Your name in reverse order is " + lastName + ", " + firstname); 
} 
} 
+7

使用'nextLine'不'未來' –

+5

並學習使用調試器,甚至是System.out.println:輸出fullName將允許您自己理解問題。 –

回答

4

當你做String fullName = inputScanner.next()你只讀燒至接下來的空格顯然沒有fullName中的空格,因爲它只是第一個名字。

如果你想讀整條生產線採用String fullName = inputScanner.nextLine();

+0

謝謝,這工作。也修復了一個越界問題。 –