将一行单词从小写转换为大写

时间:2014-08-07 09:29:51

标签: java string

我想将一行单词(包括标点符号和空格)从小写转换为大写。我处理这个问题的方法是首先以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

如何解决这个问题?谁能给我一些建议?提前谢谢。

3 个答案:

答案 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