Java 获得';无法取消对字符的引用错误';使用.toUpperCase()编译代码时;

Java 获得';无法取消对字符的引用错误';使用.toUpperCase()编译代码时;,java,char,dereference,Java,Char,Dereference,我是java新手,正在编写一个程序,可以让你输入你的名字和姓氏,并给出你的首字母,但我希望首字母总是大写的 每当我运行代码时,都会出现“char不能被取消引用”错误 import java.util.*; public class InitialHere { public static void main (String[] args) { Scanner getInput = new Scanner (Syste

我是java新手,正在编写一个程序,可以让你输入你的名字和姓氏,并给出你的首字母,但我希望首字母总是大写的

每当我运行代码时,都会出现“char不能被取消引用”错误

    import java.util.*;

    public class InitialHere
    {
        public static void main (String[] args)
        {
            Scanner getInput = new Scanner (System.in);
            String firstName;
            String lastName;
            char firstInitial;
            char lastInitial;

            System.out.println("What is your first name?");
            System.out.println();
            firstName = getInput.nextLine();
            System.out.println();
            System.out.println("Thankyou, what is your last name?");
            System.out.println();
            lastName = getInput.nextLine();

            firstInitial = firstName.charAt(0);
            lastInitial = lastName.charAt(0);
            firstInitial = firstInitial.toUpperCase();
            lastInitial = lastInitial.toUpperCase();

            System.out.println();
            System.out.println("Your initials are " + firstInitial + "" + lastInitial + ".");

        }
    }

firstInitial
的类型为
char
,它没有方法
toUpperCase
。(作为一个原语,它根本没有方法。)改为调用原始的
字符串

更新(见评论):的文档说明:

通常,应使用
String.toUpperCase()
将字符映射为大写<代码>字符串
大小写映射方法比
字符
大小写映射方法有几个优点<代码>字符串大小写映射方法可以执行区域设置敏感映射、上下文敏感映射和1:M字符映射,而
字符
大小写映射方法不能

因此,最稳健的方法是使用

String firstName = firstName.trim();  // ignore leading white space
final String firstInitial = firstName.substring(0, firstName.offsetByCodePoints(0, 1)).toUpperCase();

firstInitial
的类型为
char
,它没有方法
toUpperCase
。(作为一个原语,它根本没有方法。)改为调用原始的
字符串

更新(见评论):的文档说明:

通常,应使用
String.toUpperCase()
将字符映射为大写<代码>字符串
大小写映射方法比
字符
大小写映射方法有几个优点<代码>字符串大小写映射方法可以执行区域设置敏感映射、上下文敏感映射和1:M字符映射,而
字符
大小写映射方法不能

因此,最稳健的方法是使用

String firstName = firstName.trim();  // ignore leading white space
final String firstInitial = firstName.substring(0, firstName.offsetByCodePoints(0, 1)).toUpperCase();

firstInitial
的类型为
char
,它没有方法
toUpperCase
。(作为一个原语,它根本没有方法。)改为调用原始的
字符串

更新(见评论):的文档说明:

通常,应使用
String.toUpperCase()
将字符映射为大写<代码>字符串
大小写映射方法比
字符
大小写映射方法有几个优点<代码>字符串大小写映射方法可以执行区域设置敏感映射、上下文敏感映射和1:M字符映射,而
字符
大小写映射方法不能

因此,最稳健的方法是使用

String firstName = firstName.trim();  // ignore leading white space
final String firstInitial = firstName.substring(0, firstName.offsetByCodePoints(0, 1)).toUpperCase();

firstInitial
的类型为
char
,它没有方法
toUpperCase
。(作为一个原语,它根本没有方法。)改为调用原始的
字符串

更新(见评论):的文档说明:

通常,应使用
String.toUpperCase()
将字符映射为大写<代码>字符串
大小写映射方法比
字符
大小写映射方法有几个优点<代码>字符串大小写映射方法可以执行区域设置敏感映射、上下文敏感映射和1:M字符映射,而
字符
大小写映射方法不能

因此,最稳健的方法是使用

String firstName = firstName.trim();  // ignore leading white space
final String firstInitial = firstName.substring(0, firstName.offsetByCodePoints(0, 1)).toUpperCase();

在Java中,原语没有方法,只有装箱类型有方法。如果要获取
字符的大写版本,该类有一个方法:


(对
lastInitial
执行相同的操作)

在Java中,原语没有方法,只有装箱类型有方法。如果要获取
字符的大写版本,该类有一个方法:


(对
lastInitial
执行相同的操作)

在Java中,原语没有方法,只有装箱类型有方法。如果要获取
字符的大写版本,该类有一个方法:


(对
lastInitial
执行相同的操作)

在Java中,原语没有方法,只有装箱类型有方法。如果要获取
字符的大写版本,该类有一个方法:

(对
lastInitial
执行相同操作)

另一种解决方案:

firstInitial = (char) (firstInitial >= 97 && firstInitial <= 122 ? firstInitial - 32 : firstInitial);
lastInitial = (char) (lastInitial >= 97 && lastInitial <= 122 ? lastInitial - 32 : lastInitial);
firstInitial=(char)(firstInitial>=97&&firstInitial=97&&lastInitial另一种解决方案:

firstInitial = (char) (firstInitial >= 97 && firstInitial <= 122 ? firstInitial - 32 : firstInitial);
lastInitial = (char) (lastInitial >= 97 && lastInitial <= 122 ? lastInitial - 32 : lastInitial);
firstInitial=(char)(firstInitial>=97&&firstInitial=97&&lastInitial另一种解决方案:

firstInitial = (char) (firstInitial >= 97 && firstInitial <= 122 ? firstInitial - 32 : firstInitial);
lastInitial = (char) (lastInitial >= 97 && lastInitial <= 122 ? lastInitial - 32 : lastInitial);
firstInitial=(char)(firstInitial>=97&&firstInitial=97&&lastInitial另一种解决方案:

firstInitial = (char) (firstInitial >= 97 && firstInitial <= 122 ? firstInitial - 32 : firstInitial);
lastInitial = (char) (lastInitial >= 97 && lastInitial <= 122 ? lastInitial - 32 : lastInitial);

firstInitial=(字符)(firstInitial>=97&&firstInitial=97&&lastInitial是什么让你认为在
char
上有一个
toUpperCase
方法?或者实际上有任何方法?是什么让你认为在
char
上有一个
toUpperCase
方法?或者实际上有任何方法?是什么让你认为有
toUp方法在
char
上使用perCase
方法?或者实际上是任何方法?是什么让你认为在
char
上有
toUpperCase
方法?或者实际上是任何方法?不太正确,OP需要调用。为什么这会“更正确”?如果名称以大写字母表示值超过一个字符的字符开头,则可能会出现问题。但在这种情况下,最可靠的方法是将提取的第一个字符转换为字符串,然后对该字符串调用
toUpperCase
。不太正确,OP需要调用。为什么会这样e“more correct”?如果名称以大写字母表示值超过一个字符的字符开头,则可能会出现问题。但在这种情况下,最可靠的方法是将提取的第一个字符转换为字符串,然后对该字符串调用
toUpperCase
。不完全正确,OP需要