使用charAt将字符串转换为大写

时间:2016-03-29 17:53:04

标签: java eclipse

我正在编写一个程序,要求用户以小写字母输入他们的姓氏,并询问他们是否希望以全部大写字母输出或仅使用首字母大写。我遇到的问题是使用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()

3 个答案:

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