第五周课程总结&实验报告(三)

实验报告(三)

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)向下转型:父类对象--->子类对象
对于向上转型,程序会自动完成,而对于向下转型时,必须明确地指明要转型的子类类型,如下所示

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

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

posted on 2019-09-27 15:17  噫~  阅读(173)  评论(1编辑  收藏  举报

导航