日记本实验

编写一个模拟日记本的程序,通过在控制台输入指令,实现在本地新建日记本、打开日记本和修改日记本等功能。

(1) 用户输入指令1代表“新建日记本”,从控制台获取用户输入的日记内容。

(2) 指令2代表“打开日记本”,读取指定路径的txt文件的内容并输出到控制台。

(3) 指令3代表“修改日记本”,修改日记时,既可以修改新建日记本的内容,也可以修改已打开日记本的内容。

(4) 指令4代表“保存”,如果是新建的日记本需要保存,则将日记本保存到用户输入的路径;如果是打开的日记本需要保存,则将原来内容覆盖;

(5) 指令5代表“退出”,即退出本系统。

package rem;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
import static java.lang.System.exit;
public class asss {
//new一个Scanner,用static修饰后可被所有方法调用,提高代码的简洁性
static Scanner in = new Scanner(System.in);
//用StringBuilder当做容器来装字符串,在单线程在比StringBuffer更加快捷
static StringBuilder stringBuilder1 = new StringBuilder();
static StringBuilder stringBuilder2 = new StringBuilder();
//定义一个str路径,被static修饰后可以被所有方法调用,提高代码的简洁性
static String str;//打开的路径
//定义open的打开状态,避免没有打开日记本的情况下修改日记本报错
static int open_result = 0;
//定义new的打开状态,避免没有新建日记本的情况下修改日记本报错
static int new_result = 0;
//主线程main方法中尽量减少代码,提高程序运行的速度
public static void main(String[] args) {
while (true) {
Menu1();
try {
Operate1();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
public static void Menu1() {

System.out.println("指令1新建日记本,输入的内容");
System.out.println("指令2打开日记本,读取指定路径的txt文件的内容并输出到控制台");
System.out.println("指令3修改日记本");
System.out.println("指令4保存,如果是新建的日记本需要保存,则将日记本保存到您输入的路径;如果是打开的日记本需要保存,则将原来内容覆盖 ");
System.out.println("指令5退出");
}
public static void Operate1() throws Exception {
System.out.print("请输入您的指令:");
int Operate1_ = in.nextInt();
switch (Operate1_) {
case 1 -> New();
case 2 -> Open();
case 3 -> Alter();
case 4 -> Save();
case 5 -> exit(0);
default -> System.out.println("请输入正确的指令1-5");
}
}
public static void New() {
new_result++;
System.out.print("请输入内容:");
stringBuilder1 = new StringBuilder(in.next());
System.out.println("您输入的内容为:" + stringBuilder1);
System.out.println("新建成功");
}
public static void Open() throws Exception {
open_result++;
System.out.print("请输入路径:");
System.out.println("1:绝对路径格式为(盘名(C,D)):/(文件夹名或者文件名.txt)");
System.out.println("2:相对路径格式为,您输入的任意字符为文件名,文件位于IDEA的项目中,直接默认为.txt日记本格式");
System.out.println("3:打开格式默认为utf-8");
str = in.next();
//用try,catch来捕捉到,输入的错误路径,避免程序崩溃
FileReader reader = new FileReader(str);
BufferedReader br = new BufferedReader(reader);
String Open_;
while ((Open_ = (br.readLine())) != null) {
stringBuilder2.append(Open_);
System.out.println(Open_);
}
br.close();
System.out.println("打开成功");
}
public static void Alter() {
System.out.println("(1)修改新建日记本的内容 (2)修改已经打开日记本的内容");
System.out.print("请选择需要进行的操作:");
int Alter_ = in.nextInt();
switch (Alter_) {
case 1 -> {
if (new_result != 0) {
Alter1();
}
else System.out.println("您还没有新建任何一个日记本请先新建一个日记本再修改日记本");
}
case 2 -> {
if (open_result != 0) {
Alter2();
}
else System.out.println("您还没有打开任何一个日记本请先打开日记本再修改日记本");
}
default -> System.out.println("请输入1-2");
}
}
public static void Alter1() {
while (true) {
Menu2();
Operate2();
break;
}
}
public static void Menu2() {
System.out.println("1:插入内容");
System.out.println("2:指定内容删除");
System.out.println("3:指定范围删除");
System.out.println("4:修改范围内容");
}
public static void Operate2() {
System.out.print("请输入您的指令:");
int Operate2_ = in.nextInt();
switch (Operate2_) {
case 1 -> Alter1_Operate2_case1();
case 2 -> Alter1_Operate2_case2();
case 3 -> Alter1_Operate2_case3();
case 4 -> Alter1_Operate2_case4();
default -> System.out.println("请输入1-4");
}
}
public static void Alter1_Operate2_case1(){
try {
System.out.println("您当前的新建日记本的内容为:" + stringBuilder1);
System.out.print("请输入您要插入的内容:");
String scanner1_Alter1_Operate2_case1_ = in.next();
System.out.println("请输入您要插入的位置");
System.out.println("一个字符占一个位置,第一个字符为第0个位置,第二个字符为第1个位置依次类推");
int scanner2_Alter1_Operate2_case1 = in.nextInt();
System.out.println("插入" + scanner1_Alter1_Operate2_case1_ + "在第" + scanner2_Alter1_Operate2_case1 + "个位置");
stringBuilder1.insert(scanner2_Alter1_Operate2_case1, scanner1_Alter1_Operate2_case1_);
System.out.println("您修改后的新建日记本为:" + stringBuilder1);
} catch (Exception e) {
System.out.println("您要插入的位置可能不存在请重试");
}
}
public static void Alter1_Operate2_case2() {
try {
System.out.println("您当前的新建日记本的内容为:" + stringBuilder1);
System.out.print("请输入您要删除的内容的位置:");
System.out.println("一个字符占一个位置,第一个字符为第0个位置,第二个字符为第1个位置依次类推");
int scanner1_Alter1_Operate2_case2 = in.nextInt();
stringBuilder1.deleteCharAt(scanner1_Alter1_Operate2_case2);
System.out.println("您删除后的新建日记本内容为" + stringBuilder1);
} catch (Exception e) {
System.out.println("您要删除的位置可能不存在请重试");
}
}
public static void Alter1_Operate2_case3() {
try {
System.out.println("您当前的新建日记本的内容为:" + stringBuilder1);
System.out.println("请输入您要指定范围的起始值");
int Alter1_Operate2_case3_1 = in.nextInt();
System.out.println("请输入您要指定范围的最终值");
int Alter1_Operate2_case3_2 = in.nextInt();
stringBuilder1.delete(Alter1_Operate2_case3_1, Alter1_Operate2_case3_2);
System.out.println("您删除后的新建日记本内容为" + stringBuilder1);
} catch (Exception e) {
System.out.println("您删除的范围可能不存在或者超出了界限请重试");
}
}
public static void Alter1_Operate2_case4() {

try {
System.out.println("请输入您要替换的内容");
String Alter1_Operate2_case4_1 = in.next();
System.out.println("请输入您要修改范围的起始位置值");
int Alter1_Operate2_case4_2 = in.nextInt();
System.out.println("请输入您要修改范围的最终位置值");
int Alter1_Operate2_case4_3 = in.nextInt();
stringBuilder1.replace(Alter1_Operate2_case4_2, Alter1_Operate2_case4_3, Alter1_Operate2_case4_1);
System.out.println("您修改后的新建日记本内容为" + stringBuilder1);
} catch (Exception e) {
System.out.println("您修改的范围可能不存在或者超出了的界限请重试");
}
}
public static void Alter2() {
while (true) {
Menu3();
Operate3();
break;
}
}
public static void Menu3() {
System.out.println("1:插入内容");
System.out.println("2:指定内容删除");
System.out.println("3:指定范围删除");
System.out.println("4:替换内容");
}
public static void Operate3() {
System.out.print("请输入您的指令:");
int Operate3_ = in.nextInt();
switch (Operate3_) {
case 1 -> Alter2_Operate3_case1();
case 2 -> Alter2_Operate3_case2();
case 3 -> Alter2_Operate2_case3();
case 4 -> Alter2_Operate2_case4();
case 5 -> System.out.println("请输入1-5");
}
}
private static void Alter2_Operate3_case1(){
try {
System.out.println("您当前的打开日记本的内容为:" + stringBuilder2);
System.out.print("请输入您要插入的内容:");
String scanner1_Alter2_Operate3_case1 = in.next();
System.out.println("请输入您要插入的位置");
System.out.println("一个字符占一个位置,第一个字符为第0个位置,第二个字符为第1个位置依次类推");
int scanner2_Alter2_Operate3_case1 = in.nextInt();
System.out.println("插入" + scanner1_Alter2_Operate3_case1 + "在第" + scanner2_Alter2_Operate3_case1 + "个位置");
stringBuilder2.insert(scanner2_Alter2_Operate3_case1, scanner1_Alter2_Operate3_case1);
System.out.println("您修改后的打开日记本为" + stringBuilder2);
} catch (Exception e) {
System.out.println("您插入的位置可能不存在请重试");
}
}
private static void Alter2_Operate3_case2() {
try {
System.out.println("您当前的打开日记本的内容为:" + stringBuilder2);
System.out.print("请输入您要删除的内容的位置:");
System.out.println("一个字符占一个位置,第一个字符为第0个位置,第二个字符为第1个位置依次类推");
int scanner1_Alter2_Operate3_case2 = in.nextInt();
stringBuilder2.deleteCharAt(scanner1_Alter2_Operate3_case2);
System.out.println("您删除后的新建日记本内容为" + stringBuilder2);
} catch (Exception e) {
System.out.println("您要删除的位置可能不存在请重试");
}
}
public static void Alter2_Operate2_case3() {

try {
System.out.println("您当前的新建日记本的内容为:" + stringBuilder2);
System.out.println("请输入您要指定范围的起始值");
int Alter2_Operate2_case3_1 = in.nextInt();
System.out.println("请输入您要指定范围的最终值");
int Alter2_Operate2_case3_2 = in.nextInt();
stringBuilder2.delete(Alter2_Operate2_case3_1, Alter2_Operate2_case3_2);
System.out.println("您删除后的新建日记本内容为" + stringBuilder2);
} catch (Exception e) {
System.out.println("您要删除的位置可能不存在或者超出了界限请重试");
}
}
public static void Alter2_Operate2_case4() {
try {
System.out.println("请输入您要替换的内容");
String Alter2_Operate2_case4_1 = in.next();
System.out.println("请输入您要修改范围的起始位置值");
int Alter2_Operate2_case4_2 = in.nextInt();
System.out.println("请输入您要修改范围的最终位置值");
int Alter2_Operate2_case4_3 = in.nextInt();
stringBuilder1.replace(Alter2_Operate2_case4_2, Alter2_Operate2_case4_3, Alter2_Operate2_case4_1);
} catch (Exception e) {
System.out.println("您要修改的位置可能不存在或者超出的界限请重试");
}
}
public static void Save() throws Exception {
System.out.println("(1)保存新建的日记本 (2)保存打开的日记本");
System.out.print("请选择需要进行的操作:");
int Save_ = in.nextInt();
switch (Save_) {
case 1 -> {
if (new_result != 0) {
Save1();
}
else System.out.println("您还没有新建任何一个日记本,无法保存");
}
case 2 -> {
if (open_result != 0) {
Save2();
}
else System.out.println("您还没有打开任何一个日记本,无法保存");
}
case 3 -> System.out.println("请输入1-2");
}
}
public static void Save1() throws IOException {
System.out.print("请输入路径:");
System.out.println("1:绝对路径格式为(盘名(C,D)):/(文件夹名或者文件名.txt)");
System.out.println("2:相对路径格式为,您输入的任意字符为文件名,文件位于IDEA的项目中,直接默认为.txt日记本格式");
String Save1_;
Save1_ = in.next();
FileWriter file = new FileWriter(Save1_);
file.write(String.valueOf(stringBuilder1));
file.write("\n");
file.close();
stringBuilder1 = null;
System.out.println("保存成功");
}
public static void Save2() throws IOException {
FileWriter writer = new FileWriter(str);
writer.write(String.valueOf(stringBuilder2));
writer.write("\n");
writer.close();
stringBuilder2 = null;
System.out.println("保存成功");
}
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是啊是啊!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值