2012-01-30 157 views
0

我試圖只在交換時大寫第一個單詞的第一個字母。僅交換第一個單詞時首字母大寫

這是我到目前爲止。

import java.util.Scanner; 

public class Ass2ID7239 { 

    public static void main(String[] args) { 

     System.out.println("Please enter a line of text without any punctuation:"); 

     System.out.print("> "); 

     Scanner sc = new Scanner(System.in); 

     String input = sc.nextLine(); 

     System.out.print("I have changed your text: "); 

     input.trim(); 

     int firstSpace = input.indexOf(" "); 

     int lastSpace = input.lastIndexOf(" "); 

     String firstWord = input.substring(0, firstSpace + 1); 

     String middlePhrase = input.substring(firstSpace + 1, lastSpace); 

     String lastWord = input.substring(lastSpace, input.length()); 

     lastWord = lastWord.toUpperCase(); 

     System.out.println(lastWord + " " + middlePhrase + " " + firstWord); 

    } 

} 
+0

你看到了什麼問題?也就是說,你的輸出(如果有的話)與你的預期有什麼不同? – 2012-01-30 23:34:00

+0

嗨,歡迎來到stackoverflow。我已經重申了你的問題,因爲這與你的IDE沒什麼關係,更多的是使用字符串和(可能)空格。除非與問題相關,否則不必告訴開發工具集。 – 2012-01-30 23:45:44

+0

當我編譯然後運行時,它將整個第一個單詞大寫。我只希望它能夠交換被交換的第一個單詞的第一個字母。 – user1179184 2012-01-30 23:48:45

回答

0

一些修改; lastWord從一個空間開始。

input = input.trim(); 

    int firstSpace = input.indexOf(" "); 
    int lastSpace = input.lastIndexOf(" "); 

    String firstWord = input.substring(0, firstSpace); 
    String middlePhrase = input.substring(firstSpace + 1, lastSpace); 
    String lastWord = input.substring(lastSpace + 1); 

    if (!lastWord.isEmpty() { 
     lastWord = lastWord.substring(0, 1).toUpperCase() + lastWord.substring(1); 
    } 

    System.out.println(lastWord + " " + middlePhrase + " " + firstWord); 
+0

謝謝!!!!幫了很多! – user1179184 2012-01-31 01:05:24

2

嘗試

input.substring(0,1).toUpperCase() + input.substring(1).toLowerCase(); 
+0

不應該是lastWord而不是輸入嗎? – 2012-01-31 00:05:36

+0

它不起作用,它在最後增加了更多的單詞。 – user1179184 2012-01-31 00:15:41

相關問題