第1关:学习-Java顺序结构之字符变换之大小写字母转换
任务描述
本关任务:将键盘输入的大写字母转化为小写字母。
相关知识
为了完成本关任务,你需要掌握:
- 字符型变量和常量;
- 字符型数据的加减运算;
- 字符型数据的输入/输出。
字符型变量和常量
在之前我们学习了整型和浮点型的变量和常量,接下来介绍字符型的变量和常量。
首先我们要先了解一下什么是字符,我们之前学过 Unicode 字符集,这里的字符值的就是 Unicode 字符集中的字符。
字符型常量
字符常量,用单引号引用起来的的单个字符,就叫字符常量,例如:'w','2','R' 等。
例子:
public class Demo {
public static void main(String[] args) {
// 单引号里面是字符常量,里面的内容不可以为空,必须是一个字符,不可以是两个或多个。
System.out.println('q');
System.out.println('汉');
}
}
字符型变量
Java 中的字符型变量类型为 char ,它是一个单一的两个字节的 16 位 Unicode 字符;最小值是 \u0000(即为 0 );最大值是 \uffff(即为 65535 );默认值为空;用单引号引起来的部分;它可以储存任何字符,示例如下:
// 声明一个变量名为 a,数据类型为 char 的变量,并赋予该变量的值为 A
char a = 'A';
// 声明一个变量名为 b,数据类型为 byte 的变量,并赋予该变量的值为 汉
char b = '汉';
// 输出 a,b 两个变量
System.out.println(a);
System.out.print(b);
执行结果如下:
A
汉
字符运算
字符类型是可以运算的,因为字符在 ASCII 等字符编码表中有对应的数值。在 Java 中,对字符型字符运行时,直接当做 ASCII 表对应的整数来对待。
示例:
// 定义一个字符型变量a,值为 a
char a = 'a';
// 定义一个字符型变量b,值为 b
char b = 'b';
// 定义一个字符型变量c,值为 中
char c = '中';
// 定义一个字符型变量d,值为 国
char d = '国';
// 字符之间运算,类型会提升为 int 类型
int m = a + b; // 计算 a+b 的值
System.out.println(a);
int n = a - b; // 计算 a-b 的值
System.out.println(b);
System.out.print(c+d);
执行结果:
195
-1
42282
我们发现字符之间运算,类型会提升为 int 类型,而如果我们并不想输出它的 ASCII 码的值,而是想要输出它对应的字符该怎么办呢?
我们可以将 int 类型强制转换为 char,当我们想要将一个大范围的数据类型转换为小范围的数据类型,我们需要进行强制转换。在后面的学习任务中,我们会为大家详细介绍强制转换。
// 定义一个字符型变量a,值为 a;
char a = 'a';
// 将 int 类型强制转化为 char 型。
char m = (char)(a - 32);
// 定义一个字符型变量c,值为 中;
char c = '中';
// 定义一个字符型变量d,值为 国;
char d = '国';
// 将 int 类型强制转化为 char 型。
char n = (char)(c+d);
System.out.println(m);
System.out.print(n);
执行结果:
A
ꔪ
我们可以看到 a-32 结果为 A,这是为什么呢?
因为字符 char 采用的是 Unicode 编码的 16 位字符类型,其表示范围是 0-65536。标准的 8 位 ASCII 字符集是 Unicode 的子集,其取值范围为 0-127。大小写字母之间正好相差 32。
当然,我们还要注意的是字符串常量之间的加减运算并不需要强制转换,但是我们要注意,当它结果超出 char 的范围后会溢出。
char m = 'a' - 32;
System.out.print(m);
执行结果:
A
字符运算我们已经有了一定的了解,那字符的输入输出又是怎样的呢?
字符输入输出
在之前我们学习了整型和浮点型的输入,那我们接着来看字符型的输入输出。
它与整型和浮点型都是通过实例一个 Scanner 对象来使用,字符型是调用reader.next().charAt(0)
方法来获取键盘输入的字符。charAt(0)
括号中的参数可以不为 0 ,在后期的学习任务中我们会为大家详细介绍。
import java.util.Scanner;
public class Demo{
public static void main(String[] args) {
// 第一步:创建一个Scanner的实例对象,命名为reader
Scanner reader = new Scanner(System.in);
// 从键盘处接收用户输入的字符型数据
char a= reader.next().charAt(0);
System.out.print(a);
}
}
用户键盘输入:a
执行结果:
a
这就是如何获取键盘输入字符型数据的操作了,那我们接下来学习如何输出字符型数据。
我们之前学到的System.out.print()
和System.out.println()
,对于输出字符型数据与输出整型与字符型都是一样的。
例子:
char a = '中';
char b = '国';
System.out.println(a)
System.out.print(b);
执行结果:
中
国
接下来我们来看格式化输出字符型数据。输出整型用的符号是 %d,而浮点型是 %f,那字符型是什么呢?
%c 是格式化输出字符型符号,来看一个例子。
char d = '汉'
System.out.printf("我是%c族人",d);
执行结果:
我是汉族人
编程要求
仔细阅读右侧编辑区内给出的代码框架及注释,按照提示编写程序代码。
测试说明
平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。 可在右侧“测试结果”区查看具体的测试集详情。
开始你的任务吧,祝你成功!
源代码:
/**
* 任务:将键盘输入的字符转化为小写字母。
* 类名为:LowerCase
*/
import java.util.Scanner;
public class LowerCase {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
// 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
/********** Begin **********/
// 第一步:获取键盘输入的值
char c=reader.next().charAt(0);
// 第二步:将获取到的大写字母转化为小写字母
if(c>='A'&&c<='Z')
// 第三步:不换行输出转化后的小写字母
System.out.print((char)(c+32));
else
System.out.print((char)c);
/********** End **********/
}
}