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

时间:2015-04-11 10:00:26

标签: java string char uppercase lowercase

我知道之前有类似的问题,但实际上并没有解决我的问题。我只想获取代表员工姓名的字符串输入,并确保输入的格式为“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 );

输出:

enter image description here

2 个答案:

答案 0 :(得分:1)

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

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

添加Transform[i]而非Transform[0],因为您一次又一次地将相同的第一个字符插入数组

Demo

答案 1 :(得分:0)

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

例如:

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