我已经制作了代码,因此它会向用户询问各种问题,如果input.trim().isEmpty()
消息将被提供给用户,并且会要求用户再次输入。因此,如果用户只是写入空格,则给出消息。如果用户给出一些空格和一些字符,它将接受。
现在的问题是我想要将Word的第一个字母大写,但它确实不起作用。假如用户的输入以字母开头,那么将大写。但是,如果有空白,它根本就不会充分利用。
所以如果输入是:
卡特卡
输出是:
卡特卡
另一个例子:
卡特卡
输出是:
卡特卡
代码是:
String askWork = input.nextLine();
String workplace = askWork.trim().substring(0,1).toUpperCase()
+ askWork.substring(1);
while(askWork.trim()。isEmpty()){ String askWork = input.nextLine();
String workplace = askWork.trim().substring(0,1).toUpperCase()
+ askWork.substring(1);
}
我尝试了不同的方法但没有成功。
答案 0 :(得分:4)
问题是因为空格,因为转换为大写时所引用的所有索引都不准确。 所以首先修剪()String,这样你就可以清除所有前导和尾随空格,然后将其大写。 更好地检查空字符串和所有空格以避免异常。
String askWork = input.nextLine().trim();
String capitalized = askWork.substring(0, 1).toUpperCase() + askWork.substring(1)
答案 1 :(得分:3)
trim()
method on String
将清除所有前导和尾随空格。修剪后的String
必须成为您的新String
,以便您之后引用的所有索引都是准确的。您将不再需要replaceAll("\\s","")
。您还需要逻辑来测试空输入。您可以使用isEmpty()
method on String
。我已经写了一个玩具main()
,它一直要求一个单词,然后一旦获得一个单词就会大写并打印出来。它将测试空白输入,输入没有字符等。
public static void main(String[] args) throws Exception {
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
String askWork = "";
while (askWork.isEmpty()) {
System.out.println("Enter a word:");
askWork = input.readLine().trim();
}
String workPlace = askWork.substring(0,1).toUpperCase() + askWork.substring(1);
System.out.println(workPlace);
}
答案 2 :(得分:1)
尝试修剪输入以删除空格,然后再尝试将其大写。
String askWork = input.nextLine().trim();
String capitalized = askWork.substring(0, 1).toUpperCase() + askWork.substring(1)
但是,如果输入只是空格,则会产生IndexOutOfBoundsException
,因为调用trim()
后askWork
设置为空字符串(""
)并且然后尝试访问空(长度为0)字符串的第一个字符。
String askWork = input.nextLine().trim();
if(askWork.isEmpty()) {
// Display error
JOptionPane.showMessageDialog(null, "Bad!");
else {
String capitalized = askWork.substring(0, 1).toUpperCase() + askWork.substring(1)
JOptionPane.showMessageDialog(null, "It worked! -- " + capitalized);
}
答案 3 :(得分:0)
在开始操作其内容之前,您需要修剪输入:
String askWork = input.nextLine().trim();
String workplace = askWork.substring(0,1).toUpperCase() + askWork.substring(1);
答案 4 :(得分:0)
没有子串的另一种解决方案:
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String askWork = input.nextLine().trim();
while (askWork.isEmpty())
askWork = input.nextLine().trim();
char[] workChars = askWork.toCharArray();
workChars[0] = workChars[0].toUpperCase();
String workplace = String.valueOf(workChars);
// Work with workplace
input.close();
}