Java语言程序设计基础篇_编程练习题**17.21 (十六进制编辑器)

news2024/11/14 13:53:16

目录

题目:**17.21 (十六进制编辑器)

代码示例

结果展示


题目:**17.21 (十六进制编辑器)

  编写一个 GUI 应用程序,让用户在文本域输入一个文件名,然后按回车键,在文本域显示它的十六进制表达形式。用户也可以修改十六进制代码,然后将它回存到这个文件中,如图17-23b所示。

  • 代码示例

编程练习题17_21HexEditor.java

package chapter_17;

import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;

import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ContentDisplay;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.input.KeyCode;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class 编程练习题17_21HexEditor extends Application{
	private TextField tfInput;
	private TextArea textArea;
	private String FilePath;
	@Override
	public void start(Stage primaryStage) throws Exception {
		VBox vBox = getPane();
		
		tfInput.setOnKeyPressed(e ->{
			if(e.getCode() == KeyCode.ENTER) {
				try{
					readFile();
				}catch (IOException ex) {
					ex.printStackTrace();
				}
			}
		});
		
		Scene scene = new Scene(vBox);
		primaryStage.setTitle("编程练习题17_21HexEditor");
		primaryStage.setScene(scene);
		primaryStage.show();
	}
	public VBox getPane() {
		VBox vBox = new VBox();
		
		tfInput = new TextField();
		tfInput.setPrefWidth(300);
		Label lbInput = new Label("Enter a file:",tfInput);
		lbInput.setContentDisplay(ContentDisplay.RIGHT);
		
		textArea = new TextArea();
		Button btSave = new Button("Save the change");
		btSave.setOnAction(e ->{
			try {
				saveFile();
			}catch (IOException ex) {
				ex.printStackTrace();
			}
		});
		
		vBox.setAlignment(Pos.CENTER);
		vBox.getChildren().addAll(lbInput,tfInput,textArea,btSave);
		return vBox;
	}
	public void readFile() throws IOException{
		FilePath = tfInput.getText().replaceAll("\\\\", "/");
		if(!FilePath.isEmpty()) {
			try(
				FileInputStream input = new FileInputStream(FilePath);
				){
				int read;
				while((read = input.read()) != -1) {
					 if (read == '\n') { // 仅检查 \n  
						 textArea.appendText("\n");
					 }else
						 textArea.appendText(getHex(read)+" ");
				}
				
			}
		}
	}
	public void saveFile() throws IOException {  
	    if (!FilePath.isEmpty()) {  
	        try (BufferedWriter writer = new BufferedWriter(new FileWriter(FilePath))) {  
	            String text = textArea.getText();  
	            String[] s = text.split(" ");
	            for(String str:s) {
	            	if(str.contains("\n")) {
	            		writer.write('\n');
	            	}
	            	int i = hexStringToDecimal(str);
	            	writer.write((char)i);
	            }
	        }  
	    }  
	}
	public static int hexStringToDecimal(String hex) {  
		return Integer.parseInt(hex,16);
	}
	public static String getHex(int value) {
		return Integer.toHexString(value);
	}
	public static void main(String[] args) {
		Application.launch(args);
	}
}
  • 结果展示

C:\Users\Lenovo\eclipse-workspace\JavaFX\src\Text\Exercise17_21.txt

修改前/修改后

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SEO之网站结构优化(十四-内部链接及权重分配3)

初创企业搭建网站的朋友看1号文章;想学习云计算,怎么入门看2号文章谢谢支持: 1、我给不会敲代码又想搭建网站的人建议 2、“新手上云”能够为你开启探索云世界的第一步 博客:阿幸SEO~探索搜索排名之道 7、锚文字分布及变化 前面…

不可不知的WPF形状(Shape)

在WPF开发中经常需要进行绘制图形,可以利用Shape类型绘制基本的形状,而且Shape派生自FrameworkElement,属于UI元素范畴,可以直接利用XAML进行绘制。本文通过一些简单的小例子,简述如何通过Shape类绘制形状,…

SMB攻击利用之-设置远程mimikatz程序为定时任务流量数据包分析

SMB协议作为windows环境下最为常见的一种协议,在历史上出现过无数的通过SMB协议进行网络攻击利用的案例,包括针对SMB协议本身以及通过SMB协议实施网络攻击。 本文将介绍一种SMB协议的常见利用方式,即通过windows的服务调用将远程主机上的mim…

MySQL数据库安装(详细)—>Mariadb的安装(day21)

该网盘链接有效期为7天,有需要评论区扣我: 通过网盘分享的文件:mariadb-10.3.7-winx64.msi 链接: https://pan.baidu.com/s/1-r_w3NuP8amhIEedmTkWsQ?pwd2ua7 提取码: 2ua7 1 双击打开安装软件 本次安装的是mariaDB,双击打开mar…

【STM32开发】GPIO最全解析及应用实例

目录 【1】GPIO概述 GPIO的基本概念 GPIO的应用 【2】GPIO功能描述 1.IO功能框图 2.知识补充 3.功能详述 浮空输入 上拉输入 下拉输入 模拟输入 推挽输出 开漏输出 复用开漏输出和复用推挽输出 【3】GPIO常用寄存器 相关寄存器介绍 4个32位配置寄存器 2个32位数据寄存器 1个32位…

Linux【1】基础

目录 cd ​编辑 Linux的粘贴是Ctrlshiftv,复制、剪切: pwd打印当前路径 cat 文件目录 读取 ↑ 可以调取之间输过的命令 mv A B 把文件名A改成B #掐头%去尾 touch 文件名 mkdir创建目录​编辑 删除rm 只能删除文件 终端命令格式 帮助 man命…

vant 动态查询下拉菜单(可用)

动态查询item项 <van-form submit"onSubmit" ref"formRef"><Title title"企业信息" title-line title-size"19" class"ml-[18px] mb-[18px]"></Title><van-cell-group inset class"py-[18px]&quo…

springblade-JWT认证缺陷漏洞CVE-2021-44910

漏洞成因 SpringBlade前端通过webpack打包发布的&#xff0c;可以从其中找到app.js获取大量接口 然后直接访问接口&#xff1a;api/blade-log/api/list 直接搜索“请求未授权”&#xff0c;定位到认证文件&#xff1a;springblade/gateway/filter/AuthFilter.java 后面的代码…

【数据分享】2021-2024年我国主要城市逐月轨道交通客运量数据

以地铁为代表的轨道交通是大城市居民的主要交通出行方式之一&#xff0c;轨道交通的客运量数据是评估城市轨道交通系统运行效率、承载能力和服务水平的重要指标。本次我们为大家带来的是2021-2024年我国主要城市的逐月轨道交通客运量数据&#xff01;数据更新到2024年7月份。 …

网络安全之DC-2靶机渗透测试实战

一、靶机环境搭建 1.下载DC-2虚拟机镜像文件&#xff0c;解压后用VM打开。 DC-2镜像&#xff0c;若链接失效&#xff0c;关注公众号 文化仁 回复DC-2获取&#xff0c;或联系我获取https://pan.baidu.com/s/1gVVdEbiTkFUEOpewsn1iRg?pwd2t1j 2.设置DC-2虚拟机的网络适配器为…

redis之缓存淘汰策略

1.查看redis的最大占用内存 使用redis-cli命令连接redis服务端&#xff0c;输入命令&#xff1a;config get maxmemory 输出的值为0&#xff0c;0代表redis的最大占用内存等同于服务器的最大内存。 2.设置redis的最大占用内存 编辑redis的配置文件&#xff0c;并重启redis服务…

C语言基础(三十四)

Win32 API&#xff08;Application Programming Interface&#xff09;是微软Windows操作系统提供的一套底层的应用程序编程接口&#xff0c;允许开发者直接与Windows操作系统交互&#xff0c;创建和管理窗口、图形界面、系统资源等。Win32 API主要用于开发桌面应用程序&#x…

【OpenWrt(2)】编译OpenWrt 的SDK,以linksys e8450 的MT7622 CPU为例

资源 参考 https://downloads.openwrt.org/releases/ 文章目录 资源依赖下载 SDK查询 CPU 信号 解压使用 feed 编译后台运行 依赖 apt-get update apt-get install subversion build-essential libncurses5-dev zlib1g-dev gawk git ccache gettext libssl-dev xsltproc wget…

气膜体育馆空气质量保障:健康运动新选择—轻空间

随着气膜体育馆的广泛应用&#xff0c;人们对其内部空气质量的关注日益增加。许多人担心封闭的气膜结构可能会导致空气流通不畅&#xff0c;进而影响健康。然而&#xff0c;现代气膜体育馆凭借独特的建筑设计、先进的空气净化系统以及良好的通风和换气机制&#xff0c;能够有效…

传统CV算法——边缘算子与图像金字塔算法介绍

边缘算子 图像梯度算子 - Sobel Sobel算子是一种用于边缘检测的图像梯度算子&#xff0c;它通过计算图像亮度的空间梯度来突出显示图像中的边缘。Sobel算子主要识别图像中亮度变化快的区域&#xff0c;这些区域通常对应于边缘。它是通过对图像进行水平和垂直方向的差分运算来…

MyBatis错误(一)

说明&#xff1a;记录一次MyBatis错误&#xff0c;错误信息如下&#xff0c;说数字转换异常&#xff0c;显然&#xff0c;把一个字符串类型转为数字类型&#xff0c;肯定是不行的。 2024-08-29 19:44:43.198 ERROR 24216 --- [nio-9090-exec-2] o.a.c.c.C.[.[.[/].[dispatcher…

Leetcode面试经典150题-54.螺旋矩阵

解法都在代码里&#xff0c;不懂就留言或者私信 这个题可能和算法关联不大&#xff0c;coding技巧为上 class Solution {public List<Integer> spiralOrder(int[][] matrix) {/**先定义结果集 */List<Integer> ans new ArrayList<>();/**当前位置从(0,0)开…

SpringMVC使用:类型转换数据格式化数据验证

01-类型转换器 先在pom.xml里面导入依赖&#xff0c;一个是mvc框架的依赖&#xff0c;一个是junit依赖 然后在web.xml里面导入以下配置&#xff08;配置的详细说明和用法我在前面文章中有写到&#xff09; 创建此测试类的方法用于测试springmvc是具备自动类型转换功能的 user属…

AI智能分析/智慧安防EasyCVR视频汇聚平台新版本(V3.6.0)播放鉴权与播放限制时长的区别介绍

随着科技的飞速发展&#xff0c;视频技术已成为现代社会不可或缺的一部分&#xff0c;广泛应用于安防监控、娱乐传播、在线教育、电商直播等多个领域。EasyCVR视频汇聚平台作为视频技术的佼佼者&#xff0c;不断推陈出新&#xff0c;通过功能更新迭代&#xff0c;为用户提供更加…

PyTorch 卷积层详解

PyTorch 卷积层详解 卷积层&#xff08;Convolutional Layers&#xff09;是深度学习中用于提取输入数据特征的重要组件&#xff0c;特别适用于处理图像和序列数据。PyTorch 提供了多种卷积层&#xff0c;分别适用于不同维度的数据。本文将详细介绍这些卷积层&#xff0c;特别…