Java从入门到精通章节练习题——第十章
- Exercise 1 判断数字共有多少位
- Exercise 2 确认《长恨歌》中的第85个字是什么
- Exercise 3 判断后缀名
- Exercise 4 找到名字最后一个字相同的人
- Exercise 5 转置字符串
- Exercise 6 检索图书(一)
- Exercise 7 检索图书(二)
- Exercise 8 用户名校验
Exercise 1 判断数字共有多少位
package org.hj.chapter10;
public class DetermineNumber {
/**
* 综合练习1:判断数字共有多少位 现有如下long值:long l = 1234567890987654321L;,
* 请问这个超大的数字共有多少位?
*/
public static void main(String[] args) {
Long l = 1234567890987654321L;
int num = 0;
String string = l.toString();//转成字符串
num = string.length();
System.out.println(l + "一共有" + num + "位");
}
}Exercise 2 确认《长恨歌》中的第85个字是什么
package org.hj.chapter10;
public class EternalRegretSong {
/**
* 综合练习2:确认《长恨歌》中的第85个字是什么 《长恨歌》节选内容如下:
*
* 汉皇重色思倾国,御宇多年求不得。杨家有女初长成,养在深闺人未识。
* 天生丽质难自弃,一朝选在君王侧。回眸一笑百媚生,六宫粉黛无颜色。春寒赐浴华清池,温泉水滑洗凝脂。
* 侍儿扶起娇无力,始是新承恩泽时。云鬓花颜金步摇,芙蓉帐暖度春宵。春宵苦短日高起,从此君王不早朝。
* 承欢侍宴无闲暇,春从春游夜专夜。后宫佳丽三千人,三千宠爱在一身。
*
* 确认上述节选内容的第85个字是什么(标点符号算一个字)。
*/
public static void main(String[] args) {
String content = "汉皇重色思倾国,御宇多年求不得。杨家有女初长成,养在深闺人未识。" +
"天生丽质难自弃,一朝选在君王侧。回眸一笑百媚生,六宫粉黛无颜色。春寒赐浴华清池,温泉水滑洗凝脂。" +
"侍儿扶起娇无力,始是新承恩泽时。云鬓花颜金步摇,芙蓉帐暖度春宵。春宵苦短日高起,从此君王不早朝。" +
"承欢侍宴无闲暇,春从春游夜专夜。后宫佳丽三千人,三千宠爱在一身。";
char c = content.charAt(84);//索引从0开始计算,第85个索引为84
System.out.println(c);
}
}Exercise 3 判断后缀名
package org.hj.chapter10;
public class DetermineSuffixName {
/**
* 综合练习3:判断后缀名 设计一个方法,根据传入的文件名字符串判断该文件是不是MP4格式。
*/
public static void main(String[] args) {
String fileName1 = "我的世界.exe";
String fileName2 = "有谱.mp4";
judge(fileName1);
judge(fileName2);
}
public static void judge(String fileName) {
String substring = fileName.substring(fileName.lastIndexOf("."));
if (".mp4".equals(substring)) {
System.out.println(fileName + "是mp4格式");
} else {
System.out.println(fileName + "不是mp4格式");
}
}
}Exercise 4 找到名字最后一个字相同的人
package org.hj.chapter10;
public class FindSameName {
/**
* 综合练习4:找到名字最后一个字相同的人 在“张三”“李四”“王五”“赵六”“周七”“王哲”“白浩”“贾蓉”“慕容阿三”“黄蓉”
* 10个名字中找到并输出最后一个字相同的名字。
*/
public static void main(String[] args) {
String[] names = {"张三", "李四", "王五", "赵六", "周七", "王哲", "白浩", "贾蓉", "慕容阿三", "黄蓉"};
char lastChar = names[0].charAt(names[0].length() - 1); // 取第一个名字的最后一个字母
boolean found = false;
for (String name : names) {
if (name.charAt(name.length() - 1) == lastChar) {
System.out.println(name);
found = true;
}
}
if (!found) {
System.out.println("没有找到名字最后一个字相同的人");
}
}
}Exercise 5 转置字符串
package org.hj.chapter10;
import java.util.Scanner;
public class TransposeString {
/**
* 综合练习5:转置字符串 在控制台上输入一个字符串,将此字符串转置输出,
* 例如:“故事”转置后变为“事故”。
*/
public static void main(String[] args) {
String s = null;
Scanner scanner = new Scanner(System.in);
System.out.print("请输入要转置的字符串:");
s = scanner.nextLine();
StringBuffer stringBuffer = new StringBuffer(s);
StringBuffer reverse = stringBuffer.reverse();//调用StringBuffer中的recerse()方法完成转置操作
System.out.println("转置结果为:" + reverse);
}
}Exercise 6 检索图书(一)
package org.hj.chapter10;
import java.util.Scanner;
public class RetrieveBooks1 {
/**
* 综合练习6:检索图书(一) 书架上存放着《明史讲义》《明代社会生活史》《紫禁城的黄昏》《中国的黄金时代》
* 《国史十六讲》《停滞的帝国》《唐朝定居指南》《明史简述》《明史十讲》《大明风物志》《西方眼中的中国》
* 《皇帝与秀才》,通过关键字或书名检索出相应的书籍。
*/
public static void main(String[] args) {
// String books = "《明史讲义》,《明代社会生活史》,《紫禁城的黄昏》,《中国的黄金时代》," +
// "《国史十六讲》,《停滞的帝国》,《唐朝定居指南》,《明史简述》,《明史十讲》," +
// "《大明风物志》,《西方眼中的中国》,《皇帝与秀才》";
String books[] = {"《明史讲义》","《明代社会生活史》","《紫禁城的黄昏》","《中国的黄金时代》",
"《国史十六讲》","《停滞的帝国》","《唐朝定居指南》","《明史简述》","《明史十讲》",
"《大明风物志》","《西方眼中的中国》","《皇帝与秀才》"};
String key = null;
Scanner scanner = new Scanner(System.in);
System.out.print("请输入检索条件:");
key = scanner.nextLine();
for (int i = 0; i < books.length; i++) {
if (books[i].contains(key)) {
System.out.println(books[i]);
}
}
}
}Exercise 7 检索图书(二)
package org.hj.chapter10;
import java.util.Scanner;
public class RetrieveBooks2 {
/**
* 综合练习7:检索图书(二) 有两个小型书柜,其中第一个书柜依次有5本书,即《Java》《Java Web》《C语言》
* 《C++》《Linux C》。第二个书柜依次也有5本书,即《论语》《资治通鉴》《四十二章经》《史记》《隋唐史》。
* 控制台输入要搜索的书名或关键字(包括可忽略大小写的字母)后,输出书名以及书的位置,运行结果如图10.24所示。
*/
public static void main(String[] args) {
String bookcase1[] = {"《Java》","《Java Web》","《C语言》","《C++》","《隋唐史》"};
String bookcase2[] = {"《论语》","《资治通鉴》","《四十二章经》","《史记》","《Linux C》"};
String key = null;
Scanner scanner = new Scanner(System.in);
System.out.print("请输入检索条件:");
key = scanner.nextLine().toLowerCase();
for (int i = 0; i < bookcase1.length; i++) {
int order = 0;
if (bookcase1[i].toLowerCase().contains(key)) {
order = i + 1;
System.out.println(bookcase1[i] + ":第1个书柜里的第 " + order + "本书");
}
}
for (int i = 0; i < bookcase2.length; i++) {
int order = 0;
if (bookcase2[i].toLowerCase().contains(key)) {
order = i + 1;
System.out.println(bookcase2[i] + ":第2个书柜里的第 " + order + "本书");
}
}
}
}Exercise 8 用户名校验
package org.hj.chapter10;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class CheckUserName {
/**
* 综合练习8:用户名校验 用户注册某网站账号,该网站已注册的用户名为 mrsoft、mr、miss和Admin。
* 如果用户申请的用户名已被他人注册,则注册失败并给予用户提示。
*/
public static void main(String[] args) {
Map<String, String> user = new HashMap<>();
user.put("mrsoft", "mrsoft");
user.put("mr", "mr");
user.put("miss", "miss");
user.put("Admin", "Admin");
Scanner scanner = new Scanner(System.in);
System.out.print("请输入用户名:");
String username = scanner.nextLine();
if (user.containsKey(username)) {
System.out.println("用户名已存在,注册失败");
return;
}
System.out.println("注册成功:" + username);
}
}
















