我正在编写一个程序,要求用户以小写字母输入他们的姓氏,并询问他们是否希望以全部大写字母输出或仅使用首字母大写。我遇到的问题是使用charAt和toUpperCase。
import java.util.Scanner;
//This imports the scanner class
public class ChangeCase {
public static void main(String[] args) {
Scanner scan = new Scanner (System.in);
//This allows me to use the term scan to indicate when to scan
String lastName;
//sets the variable lastName to a string
int Option;
System.out.println("Please enter your last name");
//Prints out a line
lastName = scan.nextLine();
//scans the next line of input and assigns it to the lastName variable
System.out.println("Please select an option:"+'\n'+"1. Make all leters Capitalised"+'\n'+ "2. Make the First letter Capitalised");
Option = scan.nextInt();
if (Option == 1){
System.out.println(lastName.toUpperCase());
}
if (Option == 2){
System.out.println(lastName.charAt(0).toUpperCase());
}
}
}
我收到错误说"无法在基本类型char"
上调用toUpperCase()答案 0 :(得分:2)
您不能像{1}}那样对String.toUpperChase
应用{}},就像您的错误所说的那样。如果您想将第一个字母设为大写,则可以执行以下操作:
char
此示例运行:
运行:
希尔
建立成功(总时间:0秒)
如果您希望所有字母都是大写的,那就像
一样简单 String lastName = "hill";
String newLastName = lastName.substring(0, 1).toUpperCase() + lastName.substring(1);
System.out.println(newLastName);
此示例运行:
运行:
HILL
建立成功(总时间:0秒)
答案 1 :(得分:0)
我曾经在大学的C编程中尝试这个。也应该在这里工作。
(char)(lastName.charAt(i) - 32)
在System.out.println
中尝试上述操作当我们从字符中扣除32时的代码它将ascii值减少32并因此获得大写字母。只需引用一个ascii表来了解我想通过扣除表中的32个位置来判断什么。
答案 2 :(得分:0)
正如您的错误告诉您的那样,您无法在原始char
类型上调用String.toUpperCase()
。
System.out.println(lastName.charAt(0).toUpperCase());
但,您可以像
一样调用Character.toUpperCase(char)
System.out.println(Character.toUpperCase(lastName.charAt(0)));
或,请致电String.toUpperCase()
,然后选择第一个字符。像,
System.out.println(lastName.toUpperCase().charAt(0));