zoukankan      html  css  js  c++  java
  • Java第二次作业

    Java第二次作业

    (一)学习总结
    1.学习使用Eclipse关联jdk源代码,查看String类的equals()方法,截图,并学习其实现方法。举例说明equals方法和的区别。

    窗口->首选项->Java->已安装的jdk

    选择编辑,如图所示源代码链接无,通过源代码附件下载,并选择下载的位置
    举例说明equals方法和
    的区别。

    “==”的作用是字符串str1和str2的地址进行比较;equals()方法的作用是将字符串的内容进行比较。

    2.什么是构造方法?什么是构造方法的重载?下面的程序是否可以通过编译?为什么?
    构造方法:可视为一种特殊的方法,一个与类同名没有返回值类型的方法。 对象的创建就是通过构造方法来完成的,其功能主要是完成对象的初始化。
    构造方法的重载:1必须在同一个类 2方法名相同 3方法参数个数、参数类型、参数顺序不同。
    不能通过编译,修改方法如下图构造无参方法进行调用

    3.运行下列程序,结果是什么?查阅资料,分析为什么。

    结果为不等于0.3
    为了处理精度损失的问题,导入java.math.BigDecimal类,查阅教材p378,对上述程序进行修改。

    结果为等于0.3

    4.运行下列程序,结果是什么?分析原因,应如何修改.
    调用的时候出现问题,修改如下图

    5.在一个10000次的循环中,需要进行字符串的连接操作,那么,应该使用String类还是StringBuffer类,为什么?性能有差异吗?能否写出测试代码证明你的结论。(可查阅资料)
    String类:内容一旦声明不可变,如果要改变,则改变的一定是string类的引用地址,在string类中可以通过“+”进行字符串的链接。性能低。

    for (int i=0; i<10000;i++) { str += i }
    

    StringBuffer类:可变的,可以进行频繁的添加、修改、删除字符串的内容,只能使用append()方法进行字符串的链接。性能高。

    for(int i=0;i<10000;i++){ str.append(i); }
    

    6.总结:通过本次作业的四个实验,加深了我对字符串和数组的理解,虽然一开始因为C语言基础不好,写的一头雾水,但随着四个题目慢慢的写,自己也逐渐理解了字符串和数组应用上的一些规则,本次试验题虽然还有很多不好的地方,但希望随着自己今后的学习能够得到提高。

    (二)实验总结
    实验内容:
    1.评分系统:
    一共10个评委,满分10分,假设有5个选手,分别由评委打分,去掉一个最高分和一个最低分后的平均分为该选手得分,将选手的得分从高到低进行输出。定义适当的方法。
    程序设计思路:使用方法求出数组的最大值、最小值,在主函数中进行数组的输入,并计算数组的总数,调用两个方法,总数减去最大值和最小值并计算平均值并输出,调用第三个方法按照从大到小排序输出。

    public static int max(int grade[])
    public static int min(int grade[])
    public static int paixu(double average[])
    

    问题1:在主函数中排序部分异常中断不能运行
    原因:循环跳出有问题
    解决方案:在主函数中进行多次尝试仍不能改正,将排序写成方法在主函数中调用

    public static int paixu(double average[]){
    		for (int j=1;j<5;j++){
    			for(int i=0;i<5;i++){
    					if(average[j]>average[i]){
    						double temp;
    						temp=average[j];
    						average[j]=average[i];
    						average[i]=temp;
    						 
    					}
    			}
    			for (j=0;j<5;j++){
    				System.out.println(average[j]);
    			}
    		}
    		return 0;
    }
    

    问题2:平均值的数值不对
    原因:再循环外声明的sum=0,累计了前面几组的数据
    解决方案:将sum=0放入到for循环中

    2.Email验证:
    在各种应用中,需要对用户输入的email地址进行验证,编写一个方法,判断一个email地址是否有效。(判断条件:A:@和.同时存在 B: @在.之前 C: 不能@开头 D: 以com|cn|net|gov|edu|org结尾 )
    程序设计思路:用方法判断ABCD是否成立,如果成立返回true,不成立返回false,并在主函数中调用判断是否合法
    问题1:关于ABCD四个条件的判断
    原因:没有熟练掌握string类常用操作方法
    解决方案:

    Public int indexOf(String str);
    Public boolean endsWith(String suffix);
    
    
    public static boolean panduan(String email){
    		if(email.indexOf("@")!=-1&&email.indexOf(".")!=-1&&email.indexOf("@")<email.indexOf(".")&&email.indexOf("@")!=0){
    		if(email.endsWith("com")||email.endsWith("cn")||email.endsWith("net")||email.endsWith("gov")||email.endsWith("edu")||email.endsWith("org"))
    

    3.统计文件:
    输入一个字符串,包含各种文件类型的文件名。文件名之间用“,”分隔,要求将各个文件名的首字母大写后分别输出,并统计各种类型文件的文件个数。
    程序设计思路:输入一个字符串进行判断,文件名之间“,”隔开,分割后的字符串首字母大写,其余不变,判断输入的文件名的扩展名是否相同,输出不同类型文件的个数。

    字符串拆分:String s [ ]=str.split(“,”);
    截取字符串:public String substring (int beginIndex);
               public String substring (int beginIndex);
    

    问题1:判断任意的扩展名,尝试了一下,在统计个数的问题上出现好多错
    原因:基础不是很好,参照老师给的实验数据,进行了少数文件扩展名的判断
    问题2:无法返回文件个数
    原因:数组的返回值类型出现错误
    解决方案:将数组作为参数返回

    public static void num(String s[],int num[]){
    		int j;
    		for(j=0;j<s.length;j++){
    			if(s[j].endsWith(".c"))
    				num[0]++;
    			else if(s[j].endsWith(".java"))
    				num[1]++;
    			else if(s[j].endsWith(".class"))
    				num[2]++;
    			else if(s[j].endsWith(".exe"))
    				num[3]++;
    		}
    		
    }
    

    4.身份证识别:
    公民身份证号码由十八位数字组成。从左至右依次为:六位地址码,八位出生日期码,三位顺序码和一位校验码。顺序码的奇数分配给男性,偶数分配给女性。编写一个识别身份证基本信息的小工具,输入一个居民身份证号,则输出居民所属省份(直辖市、自治区),生日(格式:xxxx-xx-xx)和性别信息。
    程序设计思路:依次判断身份证号码前两位输出省份,判断中间8位输出出生年月日,计算倒数第二位是否能整除2,如果能就输出“女”不能则输出“男”。
    问题1:不能正确输出省份
    原因:字符型的不能直接运算需要转换成int类型。
    解决方案:

        int a=c[0]-48;
        int b=c[1]-48;
        if(a==1){
        	System.out.println("地址:"+place1[b-1]);
    	}
        if(a==2){
        	System.out.println("地址:"+place2[b-1]);
        }
        if(a==3){
        	System.out.println("地址:"+place3[b-1]);
        }
        if(a==4){
        	System.out.println("地址:"+place4[b-1]);
        }
        if(a==5){
        	System.out.println("地址:"+place5[b-1]);
        }
        if(a==6){
        	System.out.println("地址:"+place6[b-1]);
        }
    

    (三)代码托管(务必链接到你的项目)
    码云commit历史截图

    https://git.oschina.net/hebau_cs15/FMM.git

  • 相关阅读:
    深入防火墙记录(2) java程序员
    今天装了Redhat Enterprise Linux 5.0 ,体验一下不同的感受. java程序员
    最小生成树
    UVA400 Unix ls
    sudt2404Super Prime
    sdut2143图结构练习——最短路径
    多校联赛(1)Saving Princess claire_
    树结构练习——排序二叉树的中序遍历
    hdu1042N!
    最短路径
  • 原文地址:https://www.cnblogs.com/miao0512/p/6624494.html
Copyright © 2011-2022 走看看