Java - 将输入字符串转换为大写首字母和小写其他字母

Java - Convert an input string to Uppercase first letter and Lowercase other letters

我知道之前有过类似的问题,但并没有真正解决我的问题。我只想获取代表员工姓名的字符串输入,并确保输入是这种形式 "Name"。不是 "name",不是 "Name"。所以我尝试这样做,但输出不起作用。所以这是代码:

Scanner scanner = new Scanner(System.in);
String ename; // input string
System.out.println("Enter Employee Name : (Type -Name-, not -name-, not -NAME-!!!");
ename = scanner.nextLine(); // read the string input
char[] Transform = new char[ename.length()]; // this array will contain the string split in characters
for (int i = 0;i < ename.length(); i++)
{
    Transform[i] = ename.charAt(i);  // Split the input to a char array
}
Transform[0] = Character.toUpperCase(Transform[0]); // First Letter Always Capital
for (int i = 1;i < ename.length(); i++)
{
    Transform[i] = Character.toLowerCase(Transform[0]); // Other letters small
}
String name = new String(Transform); // convert the array to a new String variable
System.out.println("NEW STRING : " + name );

输出:

您需要将 i 循环中的语句更改为

 Transform[i] = Character.toLowerCase(Transform[i]); 

添加 Transform[i] 而不是 Transform[0] 因为您要一次又一次地将相同的第一个字符插入到数组中

Demo

我不知道你为什么需要这些代码。

例如:

char[] transform = new char[ename.length()];
for (int i = 0; i < ename.length(); i++) {
    transform[i] = ename.charAt(i);
}

相同
char[] transform = ename.toCharArray();

你的整个代码可以重写为:

public static String capitalise(final String name) {
    return name.substring(0, 1).toUpperCase() + name.substring(1).toLowerCase();
}

测试用例:

public static void main(String[] args) throws Exception {
    System.out.println(capitalise("Name"));
    System.out.println(capitalise("name"));
    System.out.println(capitalise("NamE"));
    System.out.println(capitalise("NAMe"));
}

输出:

Name
Name
Name
Naae