IO与容器封装java

2.7 (Y. Daniel Liang英文版第11P716*17.8)

(Update count) Suppose you wish

to track how many times a program has been executed. You can store an int to count

the file. Increase the count by 1 each time this program is executed. Let the program

be Exercise17_08 and store the count in Exercise17_08.dat.

(更新次数)假设你希望
来跟踪一个程序被执行的次数。您可以存储一个int来计算
文件。每次执行此程序时,将计数增加1。让程序
为 Exercise17_08,并将计数存储在 Exercise17_08.dat中。

2.7
package 异常类处理与捕获;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class jishujiayi {
public static void main(String[] args) {
String filePath = "E:\\eclipse-java-2023-12-R-win32-x86_64\\异常类处理与捕获\\src\\异常类处理与捕获\\Exercise17_08.dat";
File file = new File("E:\\eclipse-java-2023-12-R-win32-x86_64\\异常类处理与捕获\\src\\异常类处理与捕获\\Exercise17_08.dat");
int count = readCount(file);
count++;
writeCount(file, count);
System.out.println("程序已执行次数: " + count);
}
public static int readCount(File file) {
int count = 0;
try (DataInputStream dis = new DataInputStream(new FileInputStream(file))) {
if (dis.available() > 0) {
count = dis.readInt();
}
} catch (IOException e) {
e.printStackTrace();
}
return count;
}

public static void writeCount(File file, int count) {
try (DataOutputStream dos = new DataOutputStream(new FileOutputStream(file))) {
dos.writeInt(count);
} catch (IOException e) {
e.printStackTrace();
}
}
}

 

2.8 (Y. Daniel Liang英文版第11P717*17.14) (Encrypt files)

Encode the file by

adding 5 to every byte in the file. Write a program that prompts the user to enter an

input file name and an output file name and saves the encrypted version of the input

file to the output file.

通过以下方式对文件进行编码:
给文件中的每个字节增加5个字节。编写一个程序,提示用户输入一个
输入文件名和输出文件名,并保存输入的加密版本
文件到输出文件。

package 异常类处理与捕获;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;

public class baomiwenjin{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);

System.out.print("请输入输入文件名: ");
String inputFileName = scanner.nextLine();

System.out.print("请输入输出文件名: ");
String outputFileName = scanner.nextLine();

encryptFile(inputFileName, outputFileName);
}

public static void encryptFile(String inputFileName, String outputFileName) {
try (FileInputStream fis = new FileInputStream(inputFileName);
FileOutputStream fos = new FileOutputStream(outputFileName)) {

int byteValue;
while ((byteValue = fis.read())!= -1) {
fos.write(byteValue + 5);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

 

7-3 出勤统计

某公司现需要统计员工出勤次数,具体要求如下:

输入样例:

Mark Tom
Ivor Mark
Ivor Mark
Jack
end

输入样例解释:

每行表示某天出勤的员工名单,以空格间隔。
end表示输入结束

输出样例:

Mark 3
Ivor 2
Tom 1
Jack 1

输出样例解释:

按出勤天数倒序输出,若出勤次数相同则按输入顺序输出(即先输入的先输出,样例中Tom比Jack先输入,因此先输出Tom)。每名员工占一行,格式为员工名+空格+出勤次数

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
public class Main{
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Map<String, Integer> attendanceMap = new HashMap<>();
        List<String> nameOrder = new ArrayList<>();
        while (true) {
            String line = scanner.nextLine();
            if ("end".equals(line)) {
                break;
            }
            String[] names = line.split(" ");
            for (String name : names) {
                if (!attendanceMap.containsKey(name)) {
                    attendanceMap.put(name, 0);
                    nameOrder.add(name);
                }
                attendanceMap.put(name, attendanceMap.get(name) + 1);
            }
        }
        List<Map.Entry<String, Integer>> entries = new ArrayList<>(attendanceMap.entrySet());
        entries.sort((e1, e2) -> {
            if (e2.getValue()!= e1.getValue()) {
                return e2.getValue() - e1.getValue();
            } else {
                return nameOrder.indexOf(e1.getKey()) - nameOrder.indexOf(e2.getKey());
            }
        });
        for (Map.Entry<String, Integer> entry : entries) {
            System.out.println(entry.getKey() + " " + entry.getValue());
        }
    }
}

 

7-4 容器-HashMap-检索

输入多个学生的成绩信息,包括:学号、姓名、成绩。

学号是每个学生的唯一识别号,互不相同。

姓名可能会存在重复。

使用HashMap存储学生信息,并实现根据学号的检索功能

输入格式:

输入多个学生的成绩信息,每个学生的成绩信息格式:学号+英文空格+姓名+英文空格+成绩

以“end”为输入结束标志

end之后输入某个学号,执行程序输出该生的详细信息

输出格式:

输出查询到的学生信息格式:学号+英文空格+姓名+英文空格+成绩

如果没有查询到,则输出:"The student "+查询的学号+" does not exist"

输入样例1:

在这里给出一组输入。例如:

20201107 张少军 83
20201116 李四 78
20201118 郑觉先 80
end
20201116

输出样例1:

在这里给出相应的输出。例如:

20201116 李四 78

输入样例2:

在这里给出一组输入。例如:

20201107 张少军 83
20201116 李四 78
20201118 郑觉先 80
end
20202316

输出样例2:

在这里给出相应的输出。例如:

The student 20202316 does not exist
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Main{
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Map<String, Student> studentMap = new HashMap<>();
        while (true) {
            String line = scanner.nextLine();
            if ("end".equals(line)) {
                break;
            }
           String[] parts = line.split(" ");
            String id = parts[0];
            String name = parts[1];
            int score = Integer.parseInt(parts[2]);
            studentMap.put(id, new Student(id, name, score));
        }
        String queryId = scanner.nextLine();
       if (studentMap.containsKey(queryId)) {
            Student student = studentMap.get(queryId);
            System.out.println(student.getId() + " " + student.getName() + " " + student.getScore());
        } else {
            System.out.println("The student " + queryId + " does not exist");
        }
    }
    static class Student {
        private String id;
        private String name;
        private int score;
        public Student(String id, String name, int score) {
            this.id = id;
            this.name = name;
            this.score = score;
       }
        public String getId() {
            return id;
        }
        public String getName() {
            return name;
        }
        public int getScore() {
            return score;
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/713987.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

UI学习--分栏控制器

UI学习 分栏控制器基础概念用法 分栏控制器高级高级属性 总结 分栏控制器基础 概念 分栏控制器可以理解为一个容器&#xff0c;可以容纳多个子视图控制器&#xff0c;并通过选项卡的方式进行切换。每个选项卡都与一个特定的视图控制器相关联&#xff0c;当用户点击不同的选项…

JUC并发编程第十三章——读写锁、邮戳锁

本章路线总纲 无锁——>独占锁——>读写锁——>邮戳锁 1 关于锁的面试题 你知道Java里面有那些锁你说说你用过的锁&#xff0c;锁饥饿问题是什么&#xff1f;有没有比读写锁更快的锁StampedLock知道吗&#xff1f;&#xff08;邮戳锁/票据锁&#xff09;ReentrantR…

「动态规划」如何求乘积最大子数组?

152. 乘积最大子数组https://leetcode.cn/problems/maximum-product-subarray/description/ 给你一个整数数组nums&#xff0c;请你找出数组中乘积最大的非空连续子数组&#xff08;该子数组中至少包含一个数字&#xff09;&#xff0c;并返回该子数组所对应的乘积。测试用例的…

WebGL学习【焕新计划】

WebGL基础 在正式进入webgl之前&#xff0c;我想有必要简单了解一下渲染管线&#xff0c;毕竟它贯穿webgl学习的整个过程。 渲染管线流程图&#xff1a; webgl着色器简单语法&#xff1a; 在GLSL&#xff08;OpenGL Shading Language&#xff09;中&#xff0c;常见的变量类…

企业化运维(4)_tomcat

###1.配置tomcat### 可以将tomcat部署在server2主机&#xff0c;与nginx主服务器分开&#xff0c;便于进行交互存储。 下载安装jdk与tomcat&#xff0c;并开启服务&#xff0c;便可以在浏览器进行访问。 [rootserver3 ~]# rpm -ivh jdk-8u121-linux-x64.rpm [rootserver3 ~]#…

Mybatis-Plus多种批量插入方案对比

背景 六月某日上线了一个日报表任务&#xff0c;因是第一次上线&#xff0c;故需要为历史所有日期都初始化一次报表数据 在执行过程中发现新增特别的慢&#xff1a;插入十万条左右的数据&#xff0c;SQL执行耗费高达三分多钟 因很早就听闻过mybatis-plus的[伪]批量新增的问题&…

万事开头难——Java实现俄罗斯小方块【第一步】

目录 技术实现&#xff1a; 1.初始化游戏窗口&#xff1b; 1.1 什么是窗口&#xff1a; 1.2 Swing 1.3 JFrame创建窗口&#xff1a; 1.3.1创建窗口的逻辑 1.3.2.设置简单的页面 1.3.3.优化 1.3.4.设置标题 1.4 创建游戏窗口 技术实现&#xff1a; 1.初始化游戏窗口&am…

【CT】LeetCode手撕—20. 有效的括号

题目 原题连接&#xff1a;20. 有效的括号 1- 思路 模式识别 模式1&#xff1a;括号左右匹配 ——> 借助栈来实现 ——> Deque<Character> deque new LinkedList<>()模式2&#xff1a;顺序匹配 ——> 用 if 判断 具体思路 1.遇到左括号 直接入栈相应…

ARM32开发--电源管理单元

知不足而奋进 望远山而前行 目录 文章目录 前言 学习目标 学习内容 PMU 电源域 VDD/VDDA域 备份域 1.2V域 省电模式 睡眠模式 深度睡眠模式 待机模式 几种模式总结 WFI和WFE指令 案例需求 模式初始化 源码 总结 前言 在嵌入式系统中&#xff0c;有效的电池管…

【AI基础】第六步:纯天然保姆喂饭级-安装并运行qwen2-7b

整体步骤类似于 【AI基础】第五步&#xff1a;纯天然保姆喂饭级-安装并运行chatglm3-6b-CSDN博客。 此系列文章列表&#xff1a; 【AI基础】概览 【AI基础】第一步&#xff1a;安装python开发环境-windows篇_下载安装ai环境python 【AI基础】第一步&#xff1a;安装python开发环…

面试题 17.05. 字母与数字

链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 题解&#xff1a;把字母看成1&#xff0c;把数字看为-1&#xff0c;将题目变为求的和为0的最长连续子数组 class Solution { public:vector<string> findLongestSubarray(vector<string>& array) …

MySQL查询练习题1.平均工资2.查询各部门的总薪水3.查询总薪水排名第二的部门4.查询姓名重复的员工信息5.查询各部门薪水大于900的男性员工的平均薪水

创建一个员工表emp&#xff0c;包含字段&#xff1a;姓名name&#xff0c;性别sex&#xff0c;部门depart&#xff0c;工资salary create table emp(name varchar(30) not null,sex varchar(30) not null,depart int not null,salary int not null); 插入数据打印为 mysql>…

Windows Server 2008 r2 IIS .NET

Windows Server 2008 r2 IIS .NET

2-2 基于matlab的变邻域

基于matlab的变邻域&#xff0c;含变惯性权重策略的自适应离散粒子群算法&#xff0c;适应函数是多式联运路径优化距离。有10城市、30城市、75城市三个案例。可直接运行。 2-2 路径规划 自适应离散粒子群算法 - 小红书 (xiaohongshu.com)

MySQL基础——多表查询和事务

目录 1多表关系 2多表查询概述 3连接查询 3.1内连接 3.2左外连接 3.3右外连接 3.4自连接 4联合查询 5子查询 5.1标量子查询(子查询结果为单个值) 5.2列子查询(子查询结果为一列) 5.3行子查询(子查询结果为一行) 5.4表子查询(子查询结果为多行多列) 6事务简介和操…

模拟电子技术基础(二)--PN结

PN结的本质 芯片都是由硅晶体制成&#xff0c;单个硅原子最外层有带有4个电子 在纯硅当中这些电子会两两形成共价键&#xff0c;此时周围形成非常稳定的八电子结构 在一个回路中&#xff0c;灯泡不亮&#xff0c;不导通&#xff0c;因为电池无法吸引其中的电子离开&#xff0c…

机器学习在医学领域中的应用|文献精析·24-06-13

小罗碎碎念 2024-06-13&#xff5c;文献精析&#xff1a;机器学习在医学领域中的应用 为了系统性地和大家梳理一下机器学习在医学领域中的应用&#xff0c;我特意去找了一篇文献&#xff0c;把其中有价值的信息筛选出来了。但是我没选的内容不代表不重要&#xff0c;感兴趣的可…

高分论文密码---大尺度空间模拟预测与数字制图

大尺度空间模拟预测和数字制图技术和不确定性分析广泛应用于高分SCI论文之中&#xff0c;号称高分论文密码。大尺度模拟技术可以从不同时空尺度阐明农业生态环境领域的内在机理和时空变化规律&#xff0c;又可以为复杂的机理过程模型大尺度模拟提供技术基础。我们将结合一些经典…

Java SE进阶必备:数组中的命令行参数详解

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

5000天后的世界

为何可以预见未来 1993年&#xff0c;在互联网的黎明时代&#xff0c;凯文凯利创办了《连线》杂志。他曾经采访过以比尔盖茨、史蒂夫乔布斯、杰夫贝佐斯为代表的一众风云创业家。《连线》杂志是全球发行的世界著名杂志&#xff0c;一直致力于报道科学技术带来的经济、社会变革…