我试图将字符串的第一个字符大写。我已经看过有关堆栈溢出的其他文章,并尝试了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,我只是尝试将其作为测试导入)。
答案 0 :(得分:4)
String在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"
并且在剩下的地方也这样做。
答案 1 :(得分:3)
尝试
last = WordUtils.capitalize(last);
该方法返回一个字符串,字符串是不可变的。
答案 2 :(得分:1)
full = WordUtils.capitalize(full);
您需要将修改后的String分配回自身,以便反映更改。因为,字符串是不可变的。
或者,如果您不想使用任何外部库,您可以执行以下操作:
full = Character.toUpperCase(full.charAt(0)) + full.substring(1);
答案 3 :(得分:1)
不使用任何库
first=first.substring(0,1).toUpperCase()+first.substring(1).toLowerCase();
last=last.substring(0,1).toUpperCase()+last.substring(1).toLowerCase();
答案 4 :(得分:1)
字符串是不可变的,您可以随时将字符串修改为新的字符串。
答案 5 :(得分:0)
您可以使用:
WordUtils.capitalizeFully(full);