Java:某文件中是一首诗,每句诗中都包含一个错别字,编写程序改正过来(使用randomFile)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java:某文件中是一首诗,每句诗中都包含一个错别字,编写程序改正过来(使用randomFile)相关的知识,希望对你有一定的参考价值。

随机访问文件(RandomAccessFile类)
有个小学生将李白的古诗写错了,请你编写程序改正过来。(如下文件中所示,每行有两个错别字)
李白静夜思.txt
窗前明月光,疑似地上霜。
举头望明越,地头思故乡。

package test;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
public class test2 
static void check(char[] ch,char[] ch2,RandomAccessFile raf)//检查

for (int i = 0; i < ch2.length; i++) 
if(ch[i] != ch2[i])
modify(ch,i, raf);




static void modify(char[] ch,int i ,RandomAccessFile raf)//修改
try 
raf.seek(i*2);//跳指针
raf.write(String.valueOf(ch[i]).getBytes());//写正确答案
 catch (IOException e) 
// TODO Auto-generated catch block
e.printStackTrace();



public static void main(String[] args) 
File f = new File("D://李白静夜思.txt");//注意文件内的内容也是一行,没有回车
RandomAccessFile raf;
byte[] b = new byte[48];
String text = "床前明月光,疑是地上霜。举头望明月,低头思故乡。";
char[] ch = text.toCharArray();//正确版本
char[] ch2;//错误版本

try 
raf = new RandomAccessFile(f, "rw");
for(int i=0;i<b.length;i++)  
b[i] = raf.readByte() ; // 读取一个字节  
  
String text2 = new String(b) ; 

ch2 = text2.toCharArray();//把读来的数据放入错误数组

check(ch, ch2,raf);

raf.close();

 catch (FileNotFoundException e) 
// TODO Auto-generated catch block
e.printStackTrace();
 catch (IOException e) 
// TODO Auto-generated catch block
e.printStackTrace();


纯手打,望采纳(我文件是放在D盘的根目录下的)

参考技术A echnicolor boxes 参考技术B 文字如何判断正反顺序呢,不如重写一遍

~
~
~
~
~~~~~~~~~~~~~~~~~~~~~~~~~
参考技术C 我操,这问题牛逼,怎么让程序知道哪个是错别字?即使程序能找到错别字,它又怎么知道用哪个正确的字来改正呢?

jvm-class文件简介

jvm全称 java virtual machine (java虚拟机),也就是在计算机上再虚拟一个计算机,它存在于计算机内存中并运行在操作系统之上的。

javap -v class文件名 > 输出文件名 命令:将class文件,翻译成可读懂的字节码指令文件,里面包含了各种各样的指令。

字节码文件(Java中是16进制文件)是经过编译器预处理过的一种文件,是Java的执行文件存在形式,是一组以8位字节为基础单位的二进制流。各个数据项严格按顺序排列。但是不可以被系统直接执行,而是需要虚拟机解释执行。

Class文件格式採用一种类似于C语言结构体的伪结构来存储数据。这样的伪结构仅仅有两种数据类型:无符号数和表。

无符号数:是基本数据类型。以u1、u2、u4、u8分别代表1个字节、2个字节、4个字节、8个字节的无符号数,能够用来描写叙述数字、索引引用、数量值或者依照UTF-8编码构成的字符串值。

:由多个无符号数或者其它表作为数据项构成的复合数据类型。全部表都习惯性地以“_info”结尾。整个Class文件本质上就是一张表。

魔数:

每一个class文件的头4个字节称为魔数,它唯一的作用是确定这个文件是否为一个能被虚拟机接受的Class文件。Class文件的魔数为:0xCAFEBABE。

版本:

第五六个字节是次版本(Minor Version)。第7和第8个字节是主版本(Major Version)。
高版本号的JDK能够向下兼容曾经版本号的Class文件,可是无法执行以后版本号的Class文件,即使文件格式并未发生变化,虚拟机也必须拒绝执行超过其版本号号的Class文件。

常量池:

 
 
 

以上是关于Java:某文件中是一首诗,每句诗中都包含一个错别字,编写程序改正过来(使用randomFile)的主要内容,如果未能解决你的问题,请参考以下文章

读诗感悟:What can I hold you with?

一首小诗每一个难捱的日子都是一首诗

day04-java-循环结构(whiledo-whilefor)

使用 gnu coreutils 在 C++ 中查找包含保护错别字

eclipse使用与java语法规则

在Java中是如何定义和声明接口的?