我想将一行单词(包括标点符号和空格)从小写转换为大写。我处理这个问题的方法是首先以String形式存储句子,然后应用" toUpperCase"像这样的Java类:
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String input = in.next();
String upper = input.toUpperCase();
System.out.println(upper);
}
但它会在中间读出一个带空格或标点符号的句子,会出现这样的情况:
you are so smart!
YOU
如何解决这个问题?谁能给我一些建议?提前谢谢。
答案 0 :(得分:2)
更改
String input = in.next();
进入
String input = in.nextLine(); // you need to take entire line
现在
Scanner in = new Scanner(System.in);
String input = in.nextLine();
String upper = input.toUpperCase();
System.out.println(upper);
外出:
YOU ARE SO SMART
更多信息:阅读next()和nextLine()
答案 1 :(得分:2)
in.read()
将返回下一个令牌(根据javadoc,前面有一个完整的令牌,后面跟着与定界符模式匹配的输入,这是通过默认匹配一个空白),而不是下一行。
更改
String input = in.next();
到
String input = in.nextLine();
如果您仍想坚持“in.next()
方法”并获得整行,则可以更改分隔符模式。像这样:
Scanner in = new Scanner(System.in).useDelimiter("\n");
在这种情况下,令牌将以换行符(\n
)结束,in.next()
将返回整行。
答案 2 :(得分:1)
String input = in.next();
当您使用.next()存储输入时,只要扫描仪遇到空白,它就会停止读取输入。而如果你使用
String input = in.nextLine();
扫描仪将输入用户输入的完整行。 简单来说, next() - 输入一个单词 nextLine() - 输入一个sentense