JAVA类)
实验报告四(实现String
JAVA实验报告
实验四 运用JavaFx实现时钟动画
班 级: 计算机科学与技术1306 学 号: 0902130610 姓 名: 王 雨 思 指导教师: 鲁 鸣 鸣
2021 年 12 月 1 日
目 录
一.概述..................................................................................................... 4 二.总体方案设计 .................................................................................... 4 三.详细设计 ............................................................................................ 5 四.程序的调试与运行结果说明 ............................................................ 5 五.课程设计总结 .................................................................................... 7 六.后记..................................................................................................... 8 七.附录..................................................................................................... 8 参考文献..................................................................................................... 9
一 概述
1. 课程设计的目的
了解和掌握String类的实现原理
2. 课程设计的要求
基于ArrayList实现可以深度复制〔Deep Copy〕的栈结构。
1. 首先用ArrayList实现栈结构
2. 接着将第1步实现的栈通过Clonable接口实现深度复制
3. 课程设计的主要设计思想
基于ArrayList实现可以深度复制〔Deep Copy〕的栈结构。二 总体方案设计
编写程序实现MyString类的以下操作:
public MyString(char[] chars); public char charAt(int index); public int length();
public MyString substring(int begin, int end); public MyString toLowerCase(); public boolean equals(MyString s); public static MyString valueOf(int i); public int compare(String s); public MyString substring(int begin); public MyString toUpperCase(); public char[] toChars();
public static MyString valueOf(boolean b);
定义一个MyString类一一实现上述定义的函数,并对MyString类进行简单的测试。
三 详细设计
本实验主要包含两个类
public class MyString //新字符
串类
public class test //测试类
MyString类的UML图为:
-stringChar:char[] //私有字符串数组
+MyString(char[] chars) //构造函数
+showMyString():void //显示字符串
+charAt(index:int):char //返回指定位置的char值 +length():int //返回字符串长度
+substring(begin:int,end:int):MyString //将字符串begin——end位置的字符换成新的字符串
+toLowerCase():MyString //将所有字符串都换成小写
+equals(s:MyString):boolean //判断两个字符串是否相等
+static valueOf(int i):MyString //返回表示int值的字符串表示
+compare(String s):int //比较字符串大小
+substring(begin:int):MyString //求冲begin开始的子串 +toUpperCase():MyString //将字符串小写换成大写 +toChars():char[] //返回字符串数组
+static valueOf(b:boolean):MyString //将b换成字符串
四 程序的调试与运行结果说明运行结果:
五 课程设计总结
〔1〕运用实验的方法设计和实现,既是对刚刚学过的java课程的复习,又是一次实战演练,从而提高自己的分析问题,解决问题以及动手的能力; 〔2〕通过整个程序的设计与实现进一步加深了对 Java这门语言的理解,稳固学过的知识,为以后进一步的学习打下良好的根底。
〔3〕 在这次java编程实现中,通过对java所学到知识的运用,让我学到了很多很多的编程实践知识,大大提高了我对java编程和课本知识的理解。 本次实验是对String类型的重写,目的是加强我们对java中Sting类型的理解。虽然String类型在java作为一个根本类型,java已经提供了很成熟的操作函数,但是这次实验的目的不是让我们去如何改进String类型,而是让我们更加深入的了解String类型的实现原理。
困难及解决途径
在上机实习完成课程设计的过程中,遇到了不少的问题,一是有一些东西自己没有学过,而是在编写的过程中由于思路不清晰以及自己的粗心给自己制造了一些麻烦,还有就是会产生一些异常。但是在经过自己和老师、同学的交流,以及自己查阅资料针对性的对不懂得问题进行查询,自己没有学过但是又要用到得逐渐的得到解决,再经过自己反复的理清思路和反复的检查由思路不清晰和粗心带来的麻烦也慢慢得到了解决。
六 后记
首先,java作为一种计算机语言,它具备语言的特性,就是我们在课堂上认真听取了老师的指导之后,还得自己回去认真看书写程序,并且上机实习才能发现问题及时解决问题。就像我们学习语言一样要通过和同学之间的交流才能提高我们的实际应用能力。所以,我们在自己认真刻苦学习的同时,一定要多和同学老师交流,从他们那里吸取好的思维方式、好的学习方法。
在上机实习的时候,我现在回忆自己一学期的学习,觉得首先应该熟悉java的概念,明白程序开发的根本思想,熟悉开发环境之后马上进行自主学习,自己学习的步伐千万不能落于老师讲课授课的速度。如果这样的话,我们很可能处于一种被动学习的劣势,失去对java学习的热情,以至于恶性循环,到最终的无可救药。
在平时的训练和刚刚结束的上机实习中我深刻的体会到了学习好java我们就要一定要掌握好java的根本语句,包括条件语句和循环语句。这些就是我们编写程序这棵大树的必要组成枝叶。建立起关键语句的之后,我们才能有更强的功能和实用性。
这次实验主要是编写功能较为单一的小程序,虽然是小程序,但所用的知识却都是我们本学期学习的重点知识。在做题的过程中让我们把这些知识复习了一遍,可以我强化了知识。因为随着课程的加重,发现自己动手能力越来越假设,在事件处理和图形用户接口的使用中,出现了知识点模棱两可的情况。当然,任何的困难挫折在不断地努力中都会变得脆弱,只是暂时的阴影。最后我想说不会写java程序不要紧,多在网上找资料和文章学习,多看
看程序员的博客、与导师沟通学习,总会找到你需要的材料,书山有路勤为径,学海无涯苦作舟。
通过这四次实验,大大提高了我对java编程的理解,调高了我的逻辑思维能力。让我养成了独立思考的好习惯!
在以后的日子里,我要不断地学习这个博大精深的语言,继续不断的深化自己的实际动手能力。
七 附录
package a001; public class test {
public static void main(String[] args) {
char[] tschar1={'j','a','v','a'};
char[] tschar2={'S','T','R','I','N','G'}; String s1=\"STRING\";
MyString string1=new MyString(tschar1); MyString string2=new MyString(tschar2); MyString a;
System.out.println(\"string1=\"); string1.showMyString(); System.out.println(\"string2=\"); string2.showMyString();
System.out.println(\"the length of string1 \"+string1.length()); System.out.println(\"the length of string2 \"+string2.length()); System.out.println(\"将string2 换成小写 \"); a=string2.toLowerCase(); a.showMyString();
System.out.println(\"将string1换成大写 \"); a=string1.toUpperCase(); a.showMyString();
System.out.println(\"比较string1和s1大小 \"+string1 pare(s1)); System.out.println(\"求string2的子串 :string2.substring(3)\"); a=string2.substring(3); a.showMyString();
System.out.println(\"求string2的子串:string2.substring(3, 5) \"); a=string2.substring(3, 5); a.showMyString();
System.out.println(\"判断string1,string2是否相等System.out.println(\"MyString.valueof(false)= \");
\"+string1.equals(string2));
a=MyString.valueOf(false);
}
a.showMyString(); }
System.out.println(\"MyString.valueof(1) \"); a=MyString.valueOf(1); a.showMyString();
public class MyString {
private char[] stringChar;
public MyString(char[] chars) //构造函数 { }
public void showMyString() //显示字符串 { }
public char charAt(int index) //返回指定位置的char值 { }
public int length() //返回字符串长度 { }
public MyString substring(int begin, int end) //将字符串begin——end{
char[] string=new char[end-begin+1]; int a=0; int b=0;
for(a=begin-1;a string[b]=this.stringChar[a]; b++; return stringChar.length; return stringChar[index-1]; int a=0; for(a=0;a System.out.print(this.stringChar[a]); stringChar=chars; 位置的字符换成新的字符串 } return newString; public MyString toLowerCase() //将所有字符串都换成小写 { if((int)stringChar[a]>=(int)'A'&&(int)stringChar[a]<=(int)'Z') } public boolean equals(MyString s) //判断两个字符串是否相等 { } public static MyString valueOf(int i) //返回表示int值的字符串表示 { } public int compare(String s) //比较字符串大小 { int a=0; for(a=1;a<=s.length();a++) { char[] newchar=new char[1]; newchar[0]=(char)(i+(int)'0'); MyString newString=new MyString(newchar); return newString; int a=0; for(a=1;a<=s.length();a++) { } return true; if(s.charAt(a)!=this.charAt(a)) {return false;} } MyString string0=new MyString(newString); return string0; { } else { } newString[a]=stringChar[a]; newString[a]=(char)((int)this.stringChar[a]+b); int a=0; int b=((int)'a'-(int)'A'); //大小写之间的差值 (a>A) char[] newString=new char[(int)this.length()]; for(a=0;a } if((int)stringChar[a-1]>(int)s.charAt(a)) { } if((int)s.charAt(a)>(int)stringChar[a-1]) { } return -1; //小于s return 1; //大于s return 0; //等于s public MyString substring(int begin) //求冲begin开始的子窜〔begin?this。{ } public MyString toUpperCase() //将字符串小写换成大写 { if((int)stringChar[a]>=(int)'a'&&(int)stringChar[a]<=(int)'z') } } MyString string0=new MyString(newString); return string0; { } else { } newString[a]=stringChar[a]; newString[a]=(char)((int)stringChar[a]-b); int a=0; int b=(int)'a'-(int)'A'; //大小写之间的差值 (a>A) char[] newString=new char[(int)this.length()]; for(a=0;a for(a=0;a<=this.length()-begin;a++) { } MyString newString=new MyString(newchar); return newString; newchar[a]=stringChar[a+begin-1]; length〔〕〕 public char[] toChars() //返回字符串数组 { } public static MyString valueOf(boolean b) //将b换成字符串 return this.stringChar; { if(b) { char[] newchar={'t','r','u','e'}; MyString newString=new MyString(newchar); return newString; } else { char[] newchar={'f','a','l','s','e'}; MyString newString=new MyString(newchar); return newString; } } } 参考文献 [1] Java语言程序设计 郭克华华大学出版社 段桂华 清 因篇幅问题不能全部显示,请点此查看更多更全内容