2

文字列の最初の文字を大文字にしようとしています。スタック オーバーフローに関する他の記事を見て、Apache 共通パッケージを試しました。ただし、出力は小文字のままで、変更されません。これが私のコードです。

package name;

import java.util.Scanner;

import java.lang.Object;

import org.apache.commons.lang3.text.WordUtils;

public class Name {


public static void main(String[] args){


    Scanner input = new Scanner(System.in);

    System.out.println("What is your first name?");
    String first = input.nextLine();

    System.out.println("What is your last name?");
    String last = input.nextLine();

    String full = (first + " " + last);

    WordUtils.capitalize(full);

    System.out.println("Your name is " + full);

    input.close();
    }

}

私も試してみました

    System.out.println("What is your first name?");
    String first = input.nextLine();
            WordUtils.capitalize(first);

    System.out.println("What is your last name?");
    String last = input.nextLine();
            WordUtils.capitalize(last);     

    System.out.println("Your name is " + first + last);

capitalzieFully を使用してみましたが、結果も得られませんでした。(オブジェクトが使用されていないことを認識しています。テストとしてインポートしてみました)。

4

6 に答える 6

4

文字列は Java では不変です。

 first= WordUtils.capitalize(first);

firstしたがって、メソッドによって返されたものに再割り当てしましたcapitalize

    String first= "test";
    WordUtils.capitalize(first); 
   //Above method returns a new String,you are not receiving that

    // Still first is "test" because String is immutable.
     first= WordUtils.capitalize(first);  
    //Now  first  = "TEST"

また、残りの場所でも同じことを行います。

于 2013-10-03T11:55:12.533 に答える
3

試す

last = WordUtils.capitalize(last);

このメソッドは文字列を返します。文字列は不変です。

于 2013-10-03T11:54:34.883 に答える
1
full = WordUtils.capitalize(full);

変更を反映するには、変更された文字列をそれ自体に割り当てる必要があります。なぜなら、文字列は不変です。

または、外部ライブラリを使用したくない場合は、次のようにすることができます。

full = Character.toUpperCase(full.charAt(0)) + full.substring(1);
于 2013-10-03T11:55:30.460 に答える