Java:某文件中是一首诗,每句诗中都包含一个错别字,编写程序改正过来(使用randomFile)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java:某文件中是一首诗,每句诗中都包含一个错别字,编写程序改正过来(使用randomFile)相关的知识,希望对你有一定的参考价值。
随机访问文件(RandomAccessFile类)
有个小学生将李白的古诗写错了,请你编写程序改正过来。(如下文件中所示,每行有两个错别字)
李白静夜思.txt
窗前明月光,疑似地上霜。
举头望明越,地头思故乡。
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。
版本:
常量池:
以上是关于Java:某文件中是一首诗,每句诗中都包含一个错别字,编写程序改正过来(使用randomFile)的主要内容,如果未能解决你的问题,请参考以下文章
读诗感悟:What can I hold you with?
day04-java-循环结构(whiledo-whilefor)