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

本文主要是介绍Java语言程序设计基础篇_编程练习题**17.20 (二进制编辑器),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

题目:**17.20 (二进制编辑器)

代码示例

结果展示 


题目:**17.20 (二进制编辑器)

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

  • 代码示例

编程练习题17_20BinaryEditor.java

package chapter_17;import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.ObjectOutputStream;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_20BinaryEditor extends Application{private TextField tfInput;private TextArea textArea;private String FilePath;@Overridepublic 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_20BinaryEditor");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");}elsetextArea.appendText(getBits(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 = binaryStringToDecimal(str);writer.write((char)i);}}  }  }public static int binaryStringToDecimal(String binary) {  // 将二进制字符串转换为十进制整数  int decimal = 0;  for (int i = 0; i < binary.length(); i++) {  int bit = binary.charAt(i) - '0'; // 将字符'0'或'1'转换为整数0或1  decimal = decimal * 2 + bit;  }  // 将十进制整数转换为字符串  return decimal; }public static String getBits(int value) {String str = "";for(int i = 7; i >= 0; i--) {int temp = value >> i;int bit = temp & 1;str += bit;}return str;}public static void main(String[] args) {Application.launch(args);}
}
  • 结果展示 

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

修改前/修改后

这篇关于Java语言程序设计基础篇_编程练习题**17.20 (二进制编辑器)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1135237

相关文章

java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)

《java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)》:本文主要介绍java中pdf模版填充表单踩坑的相关资料,OpenPDF、iText、PDFBox是三... 目录准备Pdf模版方法1:itextpdf7填充表单(1)加入依赖(2)代码(3)遇到的问题方法2:pd

Java Stream流之GroupBy的用法及应用场景

《JavaStream流之GroupBy的用法及应用场景》本教程将详细介绍如何在Java中使用Stream流的groupby方法,包括基本用法和一些常见的实际应用场景,感兴趣的朋友一起看看吧... 目录Java Stream流之GroupBy的用法1. 前言2. 基础概念什么是 GroupBy?Stream

SpringBoot监控API请求耗时的6中解决解决方案

《SpringBoot监控API请求耗时的6中解决解决方案》本文介绍SpringBoot中记录API请求耗时的6种方案,包括手动埋点、AOP切面、拦截器、Filter、事件监听、Micrometer+... 目录1. 简介2.实战案例2.1 手动记录2.2 自定义AOP记录2.3 拦截器技术2.4 使用Fi

最新Spring Security的基于内存用户认证方式

《最新SpringSecurity的基于内存用户认证方式》本文讲解SpringSecurity内存认证配置,适用于开发、测试等场景,通过代码创建用户及权限管理,支持密码加密,虽简单但不持久化,生产环... 目录1. 前言2. 因何选择内存认证?3. 基础配置实战❶ 创建Spring Security配置文件

Spring Security 单点登录与自动登录机制的实现原理

《SpringSecurity单点登录与自动登录机制的实现原理》本文探讨SpringSecurity实现单点登录(SSO)与自动登录机制,涵盖JWT跨系统认证、RememberMe持久化Token... 目录一、核心概念解析1.1 单点登录(SSO)1.2 自动登录(Remember Me)二、代码分析三、

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (

Java Thread中join方法使用举例详解

《JavaThread中join方法使用举例详解》JavaThread中join()方法主要是让调用改方法的thread完成run方法里面的东西后,在执行join()方法后面的代码,这篇文章主要介绍... 目录前言1.join()方法的定义和作用2.join()方法的三个重载版本3.join()方法的工作原

Spring AI使用tool Calling和MCP的示例详解

《SpringAI使用toolCalling和MCP的示例详解》SpringAI1.0.0.M6引入ToolCalling与MCP协议,提升AI与工具交互的扩展性与标准化,支持信息检索、行动执行等... 目录深入探索 Spring AI聊天接口示例Function CallingMCPSTDIOSSE结束语

Java获取当前时间String类型和Date类型方式

《Java获取当前时间String类型和Date类型方式》:本文主要介绍Java获取当前时间String类型和Date类型方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录Java获取当前时间String和Date类型String类型和Date类型输出结果总结Java获取

C语言进阶(预处理命令详解)

《C语言进阶(预处理命令详解)》文章讲解了宏定义规范、头文件包含方式及条件编译应用,强调带参宏需加括号避免计算错误,头文件应声明函数原型以便主函数调用,条件编译通过宏定义控制代码编译,适用于测试与模块... 目录1.宏定义1.1不带参宏1.2带参宏2.头文件的包含2.1头文件中的内容2.2工程结构3.条件编