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,但这也没有产生任何结果。(我知道没有使用 Object ,我只是尝试将其导入为测试)。

4

6 回答 6

4

字符串在java中是不可变的。

 first= WordUtils.capitalize(first);

因此,您已将其重新分配给firstcapitalize方法返回的内容。

    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);

您需要将修改后的 String 分配回自身以反映更改。因为,字符串是不可变的。

或者,如果您不想使用任何外部库,则可以执行以下操作:

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

不使用任何库

first=first.substring(0,1).toUpperCase()+first.substring(1).toLowerCase();
last=last.substring(0,1).toUpperCase()+last.substring(1).toLowerCase();
于 2013-10-03T11:56:13.860 回答
1

字符串是不可变的,您可以随时将字符串修改为以后的新内容。

于 2013-11-06T14:37:48.017 回答
0

您可以使用:

 WordUtils.capitalizeFully(full);
于 2017-05-25T21:29:14.357 回答