java字符串深入探索.docx

上传人:b****7 文档编号:9666089 上传时间:2023-02-05 格式:DOCX 页数:15 大小:17.45KB
下载 相关 举报
java字符串深入探索.docx_第1页
第1页 / 共15页
java字符串深入探索.docx_第2页
第2页 / 共15页
java字符串深入探索.docx_第3页
第3页 / 共15页
java字符串深入探索.docx_第4页
第4页 / 共15页
java字符串深入探索.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

java字符串深入探索.docx

《java字符串深入探索.docx》由会员分享,可在线阅读,更多相关《java字符串深入探索.docx(15页珍藏版)》请在冰豆网上搜索。

java字符串深入探索.docx

java字符串深入探索

1键盘录入信息,总分高低排列

Student.java

packagecn.itcast_06;

publicclassStudent{

//姓名

privateStringname;

//语文成绩

privateintchinese;

//数学成绩

privateintmath;

//英语成绩

privateintenglish;

publicStudent(){

super();

}

publicStudent(Stringname,intchinese,intmath,intenglish){

super();

this.name=name;

this.chinese=chinese;

this.math=math;

this.english=english;

}

publicStringgetName(){

returnname;

}

publicvoidsetName(Stringname){

this.name=name;

}

publicintgetChinese(){

returnchinese;

}

publicvoidsetChinese(intchinese){

this.chinese=chinese;

}

publicintgetMath(){

returnmath;

}

publicvoidsetMath(intmath){

this.math=math;

}

publicintgetEnglish(){

returnenglish;

}

publicvoidsetEnglish(intenglish){

this.english=english;

}

publicintgetSum(){

returnthis.chinese+this.math+this.english;

}

}

StudentDemo.java

packagecn.itcast_06;

importjava.io.BufferedWriter;

importjava.io.FileWriter;

importjava.io.IOException;

importjava.util.Comparator;

importjava.util.Scanner;

importjava.util.TreeSet;

/*

*键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低存入文本文件

*

*分析:

*A:

创建学生类

*B:

创建集合对象

*TreeSet

*C:

键盘录入学生信息存储到集合

*D:

遍历集合,把数据写到文本文件

*/

publicclassStudentDemo{

publicstaticvoidmain(String[]args)throwsIOException{

//创建集合对象

TreeSetts=newTreeSet(newComparator(){

@Override

publicintcompare(Students1,Students2){

intnum=s2.getSum()-s1.getSum();

intnum2=num==0?

s1.getChinese()-s2.getChinese():

num;

intnum3=num2==0?

s1.getMath()-s2.getMath():

num2;

intnum4=num3==0?

s1.getEnglish()-s2.getEnglish():

num3;

intnum5=num4==0?

s1.getName().compareTo(s2.getName())

:

num4;

returnnum5;

}

});

//键盘录入学生信息存储到集合

for(intx=1;x<=5;x++){

Scannersc=newScanner(System.in);

System.out.println("请录入第"+x+"个的学习信息");

System.out.println("姓名:

");

Stringname=sc.nextLine();

System.out.println("语文成绩:

");

intchinese=sc.nextInt();

System.out.println("数学成绩:

");

intmath=sc.nextInt();

System.out.println("英语成绩:

");

intenglish=sc.nextInt();

//创建学生对象

Students=newStudent();

s.setName(name);

s.setChinese(chinese);

s.setMath(math);

s.setEnglish(english);

//把学生信息添加到集合

ts.add(s);

}

//遍历集合,把数据写到文本文件

BufferedWriterbw=newBufferedWriter(newFileWriter("students.txt"));

bw.write("学生信息如下:

");

bw.newLine();

bw.flush();

bw.write("姓名,语文成绩,数学成绩,英语成绩");

bw.newLine();

bw.flush();

for(Students:

ts){

StringBuildersb=newStringBuilder();

sb.append(s.getName()).append(",").append(s.getChinese())

.append(",").append(s.getMath()).append(",")

.append(s.getEnglish());

bw.write(sb.toString());

bw.newLine();

bw.flush();

}

//释放资源

bw.close();

System.out.println("学习信息存储完毕");

}

}

2数据排序

packagecn.itcast_07;

importjava.io.BufferedReader;

importjava.io.BufferedWriter;

importjava.io.FileReader;

importjava.io.FileWriter;

importjava.io.IOException;

importjava.util.Arrays;

/*

*已知s.txt文件中有这样的一个字符串:

“hcexfgijkamdnoqrzstuvwybpl”

*请编写程序读取数据内容,把数据排序后写入ss.txt中。

*

*分析:

*A:

把s.txt这个文件给做出来

*B:

读取该文件的内容,存储到一个字符串中

*C:

把字符串转换为字符数组

*D:

对字符数组进行排序

*E:

把排序后的字符数组转换为字符串

*F:

把字符串再次写入ss.txt中

*/

publicclassStringDemo{

publicstaticvoidmain(String[]args)throwsIOException{

//读取该文件的内容,存储到一个字符串中

BufferedReaderbr=newBufferedReader(newFileReader("s.txt"));

Stringline=br.readLine();

br.close();

//把字符串转换为字符数组

char[]chs=line.toCharArray();

//对字符数组进行排序

Arrays.sort(chs);

//把排序后的字符数组转换为字符串

Strings=newString(chs);

//把字符串再次写入ss.txt中

BufferedWriterbw=newBufferedWriter(newFileWriter("ss.txt"));

bw.write(s);

bw.newLine();

bw.flush();

bw.close();

}

}

3MyBufferReader的功能

MyBufferReader.java

packagecn.itcast_08;

importjava.io.IOException;

importjava.io.Reader;

/*

*用Reader模拟BufferedReader的readLine()功能

*

*readLine():

一次读取一行,根据换行符判断是否结束,只返回内容,不返回换行符

*/

publicclassMyBufferedReader{

privateReaderr;

publicMyBufferedReader(Readerr){

this.r=r;

}

/*

*思考:

写一个方法,返回值是一个字符串。

*/

publicStringreadLine()throwsIOException{

/*

*我要返回一个字符串,我该怎么办呢?

我们必须去看看r对象能够读取什么东西呢?

两个读取方法,一次读取一个字符或者一次读取一个字符数组

*那么,我们要返回一个字符串,用哪个方法比较好呢?

我们很容易想到字符数组比较好,但是问题来了,就是这个数组的长度是多长呢?

*根本就没有办法定义数组的长度,你定义多长都不合适。

所以,只能选择一次读取一个字符。

*但是呢,这种方式的时候,我们再读取下一个字符的时候,上一个字符就丢失了所以,我们又应该定义一个临时存储空间把读取过的字符给存储起来。

*这个用谁比较和是呢?

数组,集合,字符串缓冲区三个可供选择。

*经过简单的分析,最终选择使用字符串缓冲区对象。

并且使用的是StringBuilder

*/

StringBuildersb=newStringBuilder();

//做这个读取最麻烦的是判断结束,但是在结束之前应该是一直读取,直到-1

/*

hello

world

java

104101108108111

119111114108100

1069711897

*/

intch=0;

while((ch=r.read())!

=-1){//104,101,108,108,111

if(ch=='\r'){

continue;

}

if(ch=='\n'){

returnsb.toString();//hello

}else{

sb.append((char)ch);//hello

}

}

//为了防止数据丢失,判断sb的长度不能大于0

if(sb.length()>0){

returnsb.toString();

}

returnnull;

}

/*

*先写一个关闭方法

*/

publicvoidclose()throwsIOException{

this.r.close();

}

}

MyBufferReaderDemo.java

packagecn.itcast_08;

importjava.io.FileReader;

importjava.io.IOException;

/*

*测试MyBufferedReader的时候,你就把它当作BufferedReader一样的使用

*/

publicclassMyBufferedReaderDemo{

publicstaticvoidmain(String[]args)throwsIOException{

MyBufferedReadermbr=newMyBufferedReader(newFileReader("my.txt"));

Stringline=null;

while((line=mbr.readLine())!

=null){

System.out.println(line);

}

mbr.close();

//System.out.println('\r'+0);//13

//System.out.println('\n'+0);//10

}

}

4FileReader功能

LineNumberReader.java

packagecn.itcast_09;

importjava.io.FileReader;

importjava.io.IOException;

importjava.io.LineNumberReader;

/*

*BufferedReader

*|--LineNumberReader

*publicintgetLineNumber()获得当前行号。

*publicvoidsetLineNumber(intlineNumber)

*/

publicclassLineNumberReaderDemo{

publicstaticvoidmain(String[]args)throwsIOException{

LineNumberReaderlnr=newLineNumberReader(newFileReader("my.txt"));

//从10开始才比较好

//lnr.setLineNumber(10);

//System.out.println(lnr.getLineNumber());

//System.out.println(lnr.getLineNumber());

//System.out.println(lnr.getLineNumber());

Stringline=null;

while((line=lnr.readLine())!

=null){

System.out.println(lnr.getLineNumber()+":

"+line);

}

lnr.close();

}

}

MyLineNumberReader.java

packagecn.itcast_09;

importjava.io.IOException;

importjava.io.Reader;

publicclassMyLineNumberReader{

privateReaderr;

privateintlineNumber=0;

publicMyLineNumberReader(Readerr){

this.r=r;

}

publicintgetLineNumber(){

//lineNumber++;

returnlineNumber;

}

publicvoidsetLineNumber(intlineNumber){

this.lineNumber=lineNumber;

}

publicStringreadLine()throwsIOException{

lineNumber++;

StringBuildersb=newStringBuilder();

intch=0;

while((ch=r.read())!

=-1){

if(ch=='\r'){

continue;

}

if(ch=='\n'){

returnsb.toString();

}else{

sb.append((char)ch);

}

}

if(sb.length()>0){

returnsb.toString();

}

returnnull;

}

publicvoidclose()throwsIOException{

this.r.close();

}

}

MyLineNumberReader.java

packagecn.itcast_09;

importjava.io.IOException;

importjava.io.Reader;

importcn.itcast_08.MyBufferedReader;

publicclassMyLineNumberReader2extendsMyBufferedReader{

privateReaderr;

privateintlineNumber=0;

publicMyLineNumberReader2(Readerr){

super(r);

}

publicintgetLineNumber(){

returnlineNumber;

}

publicvoidsetLineNumber(intlineNumber){

this.lineNumber=lineNumber;

}

@Override

publicStringreadLine()throwsIOException{

lineNumber++;

returnsuper.readLine();

}

}

MyLineNumberReaderDemo.java

packagecn.itcast_09;

importjava.io.FileReader;

importjava.io.IOException;

publicclassMyLineNumberReaderTest{

publicstaticvoidmain(String[]args)throwsIOException{

//MyLineNumberReadermlnr=newMyLineNumberReader(newFileReader(

//"my.txt"));

MyLineNumberReader2mlnr=newMyLineNumberReader2(newFileReader(

"my.txt"));

//mlnr.setLineNumber(10);

//System.out.println(mlnr.getLineNumber());

//System.out.println(mlnr.getLineNumber());

//System.out.println(mlnr.getLineNumber());

Stringline=null;

while((line=mlnr.readLine())!

=null){

System.out.println(mlnr.getLineNumber()+":

"+line);

}

mlnr.close();

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1