1

我有一个非常愚蠢的问题,但我不知道该怎么做,因为我是初学者。从标题中,你大概能猜到我需要什么帮助……

这是我创建的基本程序:

    // Character name.
import java.util.Scanner;

public class name {
    public void charName(){
        Scanner input = new Scanner(System.in);
        String name;
        System.out.println("What is your name?");
        name = input.nextLine();

        System.out.println(name + "? That's a very nice name, pleased to meet you!");
    }
}

这要求一个名称,然后再次重复该名称以及一个语句。我的问题是,这会回复我输入的确切内容,所以如果我输入“jake”,它会回复“jake”,或者如果我输入“JaKe”,它会回复“JaKe”。我希望这个程序能够以首字母大写的方式说出人名,无论我如何键入它。例如,我键入“JAKE”,但它以“Jake”响应。

4

6 回答 6

3

您将需要String该类的一些方法:

  • substring(int, int):从索引中获取子字符串
  • substring(int):获取从索引到字符串末尾的子字符串
  • toLowerCase():将整个字符串转换为小写
  • toUpperCase():将整个字符串转换为大写

使用这两种substring方法来获取第一个字母和名称的其余部分作为单独的字符串。然后使用toUpperCase()andtoLowerCase()将字符串重新连接在一起。

于 2013-10-04T22:13:02.190 回答
2

一排:

    String str = "jake";

    String out = str.substring(0, 1).toUpperCase() + str.substring(1);

顺便说一句,作为其他选项,您将使用WordUtils

WordUtils.capitalize("i am FINE") = "I Am FINE"

于 2013-10-04T22:17:28.927 回答
0

Apache Commons 库有一组不错的字符串实用程序。

capitalizeFully方法完全符合您的需要。

WordUtils.capitalizeFully("pOkEmOn lolz NOOBZ"); // returns Pokemon Lolz Noobz

确实,该解决方案需要一个额外的依赖项,但该方法同时处理单字和多字输入。此外,图书馆里还有很多其他整洁的东西,我真的没有做过一个不会使用它的项目。

如果你想坚持使用 vanilla Java API,你可以使用

name = name.substring(0, 1).toUpperCase() + name.substring(1).toLowerCase();

不过,这只适用于一个单词。一些用户可能会想输入全名,例如Bender Bending Rodriguez. 这可以通过将其与split方法相结合来轻松解决,但我将把它留给你;)

于 2013-10-04T22:17:09.120 回答
0

如果您可以使用 3rd 方库。使用这个WordUtils#capitalizeFully(String)。或者,如果这是家庭作业,而您必须自己完成,请参阅String#toLowerCase()String#toUpperCase()第一个字符,请参阅String#substring

于 2013-10-04T22:18:12.547 回答
0

首先小写输入,然后大写第一个字符:

String name = "Jake";
String lower= name.toLowerCase();

之后看看这里:First char to upper case

于 2013-10-04T22:12:43.830 回答
0

这有帮助吗:

String capSmall = "jAKE";
String firstLetter = String.valueOf(capSmall.charAt(0));
String theRest = capSmall.substring(1);
String result = firstLetter.toUpperCase() + theRest.toLowerCase();
System.out.println("---"+result);
于 2013-10-04T22:14:36.967 回答