zoukankan      html  css  js  c++  java
  • 第五周课程总结&实验报告(三)

    实验报告(三)

    1.已知字符串:"this is a test of java".按要求执行以下操作:(要求源代码、结果截图。)

    • 统计该字符串中字母s出现的次数。
    • 统计该字符串中子串“is”出现的次数。
    • 统计该字符串中单词“is”出现的次数。
    • 实现该字符串的倒序输出。

    (1).实验代码:

    package 测试;
    import java.util.Scanner;
    public class 测试0 {
    	public static void szimu(String str) {
    		int count=0;
    		char c[] = str.toCharArray();
    		for(int i=0;i<c.length;i++) {
    			if(c[i]=='s') {
    				count++;
    			}
    		}
    		System.out.println("该字符串中字母s出现的次数为:"+count);
    	}
    	public static void iszichuan(String str) {
    		int count=0;
    		char c[] = str.toCharArray();
    		for(int i=0;i<c.length;i++) {
    			if(c[i]=='s'&&c[i-1]=='i') {
    				count++;
    			}
    		}
    		System.out.println("该字符串中子串“is”出现的次数为:"+count);
    	}
    	public static void isdanci(String str) {
    		int count=0;
    		String s[]=str.split(" ");
    		for(int i=0;i<s.length;i++) {
    			if(s[i].contentEquals("is")) {
    				count++;
    			}
    		}
    		System.out.println("该字符串中单词“is”出现的次数为:"+count);
    	}
    	public static void daoxushuchu(String str) {
    		char c[] = str.toCharArray();
    		System.out.print("该字符串的倒序输出为:");
    		for(int i=c.length-1;i>=0;i--) {
    			System.out.print(c[i]);
    		}
    	}
    	public static void main(String[] args) {
    		Scanner sc=new Scanner(System.in);
    		System.out.println("请输入字符串:");
    		String str=sc.nextLine();
    		szimu(str);
    		iszichuan(str);
    		isdanci(str);
    		daoxushuchu(str);
            }
    }
    
    

    (2)实验运行结果截图:

    (3)实验大致思路:

    设立多个方法,对输入的字符串进行分别操作,再分别输出结果

    (4)实验中遇到的问题:

    用的是对输入的字符串来进行操作,这样很容易修改代码(因为只用更改方法,接下来的题目都是在这个代码模式的基础上改的),在进行字符串的操作的时候toCharArray()方法和split()方法弄混了,给我造成了一定程度的麻烦,后面理清楚了这题就不难了.

    2.请编写一个程序,使用下述算法加密或解密用户输入的英文字串。要求源代码、结果截图。

    (1).实验代码:

    这里题目表述我不是很清楚,有2种情况,一种是让单个字符的ASCII往后3位,一种是移动位置往后3位,所以我都弄了
    单个字符的ASCII往后3位:

    package 测试;
    import java.util.Scanner;
    public class 测试0 {
    	public static void jiami(String str) {
    		System.out.println("加密的字符串:");
    		char c[]=str.toCharArray();
    			for(int i=0;i<c.length;i++) {
    				c[i]+=3;
    				System.out.print(c[i]);
    			}
    
    	}
    	public static void main(String[] args) {
    		Scanner sc=new Scanner(System.in);
    		System.out.println("请输入字符串:");
    		String str=sc.nextLine();
    		jiami(str);
            }
    }
    
    

    移动位置往后3位:

    package 测试;
    import java.util.Scanner;
    public class 测试0 {
    	public static void jiami(String str) {
    		String s[]=str.split("");
    		int j=str.length();
    		if(j>3) {
    			System.out.println("加密的字符串:");
    			System.out.print(s[j-3]);
    			System.out.print(s[j-2]);
    			System.out.print(s[j-1]);
    			for(int i=0;i<j-3;i++) {
    				System.out.print(s[i]);
    			}
    		}
    		if(j==1||j==3) {
    			System.out.println("加密的字符串:");
    			System.out.print(str);
    		}
    		if(j==2) {
    			System.out.println("加密的字符串:");
    			System.out.print(s[1]);
    			System.out.print(s[0]);
    		}
    
    	}
    	public static void main(String[] args) {
    		Scanner sc=new Scanner(System.in);
    		System.out.println("请输入字符串:");
    		String str=sc.nextLine();
    		jiami(str);
            }
    }
    

    (2)实验运行结果截图:

    单个字符的ASCII往后3位:

    移动位置往后3位:

    (3)实验大致思路:

    单个字符的ASCII往后3位:
    用toCharArray()方法对字符串进行拆分,在输出之前往后(ASCII)移动3位再输出
    移动位置往后3位:
    用split()方法拆分字符串,对于字符串长度大于3的,先输出最后面3位的字符,然后再按顺序输出其他的字符,如果字符串长度等于1或3就原样输出,等于2就倒序输出

    (4)实验中遇到的问题:

    就是没清楚题目的意思,所以就弄了2个,都不是很复杂,和第一题差不多,都是运用String的操作方法来做题,弄清楚toCharArray()方法和split()方法就很简单

    3.已知字符串“ddejidsEFALDFfnef2357 3ed”。输出字符串里的大写字母数,小写英文字母数,非英文字母数。

    (1).实验代码:

    package 测试;
    import java.util.Scanner;
    public class 测试0 {
    	public static void chazhao(String str) {
    		int daxie=0,xiaoxie=0,qita=0;
    		char c[]=str.toCharArray();
    		for(int i=0;i<c.length;i++) {
    			if(c[i]>='A'&&c[i]<='Z') {
    				daxie++;
    			}
    			else if(c[i]>='a'&&c[i]<='z') {
    				xiaoxie++;
    			}
    			else {
    				qita++;
    			}
    		}
    		System.out.println("大写字母为:"+daxie);
    		System.out.println("小写字母为:"+xiaoxie);
    		System.out.println("其他非字母为:"+qita);
    
    	}
    	public static void main(String[] args) {
    		Scanner sc=new Scanner(System.in);
    		System.out.println("请输入字符串:");
    		String str=sc.nextLine();
    		chazhao(str);
            }
    }
    
    

    (2)实验运行结果截图:

    (3)实验大致思路:

    用.toCharArray()方法对输入的字符串进行拆分,再一个个进行判断最后输出结果

    (4)实验中遇到的问题:

    在学习C语言的时候做过类似的题目,所以很快就做出来了,和C语言不一样的就是要用toCharArray()方法来拆分,而不是在输入的时候直接就输入进字符数组(虽然java好像也可以这么做,但是比较复杂就不如这样了)

    第五周课程总结

    从开学到现在已经进行了5周的学习,从对java的一无所知,到现在的初窥门径.在只知道C语言的情况下,现在通过学习也能够做出java的题目了,java和C语言的相似之处还是很多的,有些甚至就是在C语言做过,需要做的只是将其用java表示出来就行了

    这周学习的内容:

    1.继承:

    继承就是可以实现直接将父类中的操作直接拿到子类中使用的方式,继承是面向对象三大特征之一.
    类继承的格式

    class 父类{}       //定义父类
    class 子类 extends 父类{}      //使用extends关键字实现继承
    

    当然,子类也可以定义自己的属性和方法.
    注意:在java中只允许单继承,不能使用多重继承,允许进行多层继承.即:一个子类只能继承一个父类,但是一个父类还可以有另一个父类.

    2.方法的重载和覆写的区别

    重载:
    单词:Overloading
    定义:方法名称相同,参数的类型或个数不同,对权限没有要求
    范围:发生在一个类中
    覆写:
    单词:Overriding
    定义:方法名称,参数类型,返回值类型全部相同,被覆写的方法不能拥有更严格的权限
    范围:发生在继承类中

    3.this关键字和与super关键字的区别

    this关键字:
    概念:访问本类中的属性和方法
    查找范围:先查找本类,如果本类没有则查找父类.
    构造:this调用本类构造,必须放在构造方法的首行.
    其他:表示当前对象.
    super关键字:
    概念:访问父类中的属性和方法
    查找范围:不查找本类,直接调用父类定义.
    构造:super调用父类构造,必须放在子类构造方法首行.
    其他:不能表示当前对象.

    4.final关键字:

    final在Java中表示的意思是最终的意思,也可以称为完结器.可以使用final关键词声明,属性,方法,在声明的时候要注意以下几点:
    (1)使用final声明的类不能有子类
    (2)使用final声明的方法不能被子类覆写
    (3)使用final声明变量即成为常量,常量不可以修改

    5.抽象类

    抽象类的作用就是比普通类多了一些抽象方法,其他地方和普通类的组成基本一样
    抽象类的定义格式

    abstract class 抽象类名称{
            属性;
            访问权限  返回值类型  方法名称(参数){      //普通方法
                [return 返回值];
         }
         访问权限  abstract  返回值类型  方法名称(参数);       //抽象方法
    
    }
    

    6.多态性

    对象的多态性主要分为以下两种类型
    (1)向上转型:子类对象--->父类对象
    (2)向下转型:父类对象--->子类对象
    对于向上转型,程序会自动完成,而对于向下转型时,必须明确地指明要转型的子类类型,如下所示

    对象向上转型:父类 父类对象 = 子类实例;
    对象向下转型:子类 子类对象 = (子类)父类实例;
    

    注意:在进行对象的向下转型前,必须首先发生对象向上转型,否则将出现对象转换异常.

  • 相关阅读:
    在GDI+中如何实现以左下角为原点的笛卡尔坐标系
    html中内联元素和块元素的区别、用法以及联系
    HttpClient超时设置
    springMVC实现文件上传
    IDEA生成serialVersionUID的警告
    java中两个字符串如何比较大小
    gerrit简版教程
    mysql中OPTIMIZE TABLE的作用及使用
    mysql慢查询日志分析
    checkStype和findBugs校验
  • 原文地址:https://www.cnblogs.com/zhuwanxing/p/11598167.html
Copyright © 2011-2022 走看看