我知道之前有类似的问题,但实际上并没有解决我的问题。我只想获取代表员工姓名的字符串输入,并确保输入的格式为“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 );
输出:
答案 0 :(得分:1)
您需要将i循环中的Statement更改为
Transform[i] = Character.toLowerCase(Transform[i]);
添加Transform[i]
而非Transform[0]
,因为您一次又一次地将相同的第一个字符插入数组
答案 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