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

试验报告

1.已知字符串:"this is a test of java".按要求执行以下操作:(要求源代码、结果截图。)
·统计该字符串中字母s出现的次数。
·统计该字符串中子串“is”出现的次数。
·统计该字符串中单词“is”出现的次数。
·实现该字符串的倒序输出。

代码

package text3;

//字符串中字母s出现的次数
public class Characters {
	public static void main(String[] args) {
		String str = "this is a test of java";
		int count=0;
		int i;
		char[] ch = str.toCharArray();
		for(i=0;i<ch.length;i++)
		{
			if(ch[i]=='s')
				count++;
		}
		System.out.println("s个数是:"+count);
	}
}

//字符串中子串“is”出现的次数
public class Characteriscount {
	public static void main(String[] args) {
		String str = "this is a test of java";
		int count=0;
		int i;
		int j;
		String ch="is";
		j=0;
		
		for(i=0;i<str.length();i++)
		{
			if(str.indexOf(ch,j)==-1)
				break;
			
			else
			{
				count++;
				j=str.indexOf(ch,j)+1;
			}
		}
		
		System.out.println("is个数是:"+count);
	}
}

//字符串中单词“is”出现的次数
public class Characterisword {
	public static void main(String[] args) {
		String str = "this is a test of java";
		int count=0;
		int i;
		
		String[] ch= str.split(" ");
		
		for(i=0;i<ch.length;i++)
		{
			if(ch[i].equals("is"))
				count++;
			
		}
		
		System.out.println("单词is个数是:"+count);
	}
}

//字符串的倒序输出
   //单词倒序输出
public class Characterinvertprint {
	public static void main(String[] args) {
		String str = "this is a test of java";
	
		int i;
		
		String[] ch = str.split(" ");
		
		for(i=ch.length-1;i>=0;i--)
		{
			System.out.print(ch[i]+" ");
		}
		
	}
}

//字母倒序输出
public class Characterprint {
	public static void main(String[] args) {
		String str = "this is a test of java";
	
		int i;
		
		char[] ch = str.toCharArray();
		
		for(i=ch.length-1;i>=0;i--)
		{
			System.out.print(ch[i]);
		}
		
	}
}

遇到的问题

1.统计该字符串中字母s出现的次数 时输出结果错误;

解决办法:不使用substring方法,改为使用indexOf方法查找到指定字符串就会返回字符串的最后的位置。
2.实现该字符串的倒序输出 时报错,字符串数组的最后字符串下标是长度减一;

解决办法:把i=ch.lenght;改为i=lenght-1。

运行结果

1.1

1.2

1.3

1.4

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

代码

package Encrypt;


import java.util.*;
public class Encryptstr {
	private String str;
	
	public Encryptstr() {
		
	}

	public String getStr() {
		return str;
	}

	public void setStr(String str) {
		this.str = str;
	}
	
	//输入字符串
	public void Inputstr() {
		Scanner pw = new Scanner(System.in);
		String str = pw.next();
		
		this.str = str;
		pw.close(); 
	}
	
	//加密过程
	public String encrystr() {
		char[] ch = str.toCharArray();
		int i;
		for(i=0;i<str.length();i++)  //后移3位
		{
			ch[i]=(char)(ch[i]+3);
			
		}
		
		//重新连成字符串
		String str = new String(ch);
		this.str = str;
		return str;
	}
	
	//解密
	public String deciphering() {
		char[] ch = str.toCharArray();
		int i;
		for(i=0;i<str.length();i++)  //后移3位
		{
			ch[i]=(char)(ch[i]-3);
			
		}
		
		//重新连成字符串
		String str = new String(ch);
		this.str = str;
		return str;
	}
	
	//测试
		public static void main(String args[]) {
			Encryptstr str1 = new Encryptstr();
			
			System.out.println("请输入需加(解)密内容:");
			str1.Inputstr();
			
			
			System.out.println("加密后:"+str1.encrystr());
			
			System.out.println("解密后:"+str1.deciphering());
		}
}	

遇到的问题

无。

运行结果

更正

代码

package Encrypt;


import java.util.*;
public class Encryptstr {
	private String str;
	
	public Encryptstr() {
		
	}

	public String getStr() {
		return str;
	}

	public void setStr(String str) {
		this.str = str;
	}
	
	//输入字符串
	public void Inputstr() {
		Scanner pw = new Scanner(System.in);
		String str = pw.next();
		
		this.str = str;
		
		pw.close(); 
	}
	
	//加密过程
	public String encrystr() {
		char[] ch = str.toCharArray();

		char[] st = null;
		st = new char[str.length()];
		int i;
		
		for(i=0;i<str.length();i++)  //后移3位
		{
			if(i>str.length()/2)
			{
				st[i+3-str.length()]=ch[i];
			}
			else
				st[i+3]=ch[i];
		}
		
		//重新连成字符串
		String str = new String(st);
		this.str = str;
		return str;
	}
	
	//解密
	public String deciphering() {
		char[] ch = str.toCharArray();
		char[] st = null;
		st = new char[str.length()];
		
		int i;
		for(i=0;i<str.length();i++)  //后移3位
		{
			if(i<3)
			{
				st[i-3+str.length()]=ch[i];
			}
			else
				st[i-3]=ch[i];
			
		}
		
		//重新连成字符串
		String str = new String(st);
		this.str = str;
		return str;
	}
	
	public static void main(String args[]) {
		Encryptstr str1 = new Encryptstr();
		
		System.out.println("请输入需加(解)密内容:");
		str1.Inputstr();
		
		
		//System.out.println("加密后:"+str1.encrystr());
		
		System.out.println("解密后:"+str1.deciphering());
	}
}	

运行结果

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

代码

package Count;

public class Countchar {
	public static void main(String args[]) {
		String str = "ddejidsEFALDfnef2357 3ed";
		
		int i;
		int countcapitals=0;   //大写英文字母数
		int countsmall=0;     //小写英文字母数
		int countnoletter=0;    //非英文字母数
		
		for(i=0;i<str.length();i++)
		{
			if(str.charAt(i)>='A'&& str.charAt(i)<='Z')
				countcapitals++;
			
			else if(str.charAt(i)>='a'&& str.charAt(i)<='z')
					countsmall++;
			
			else
				countnoletter++;
		}
		
		System.out.println("大写英文字母数:"+countcapitals);
		System.out.println("小写英文字母数:"+countsmall);
		System.out.println("非英文字母数:"+countnoletter);
	}
}

遇到的问题

无。

运行结果

课程总结

本周学习了

继承

概念
类的继承方式:class 父类{}
class 子类 extends 父类{}
继承的实现:通过继承的功能可以直接把父类中的操作直接拿到子类中使用,子类也可以定义自己的属性或方法。
注意:只可多层继承,不可多重继承;子类不能直接访问父类中的私有成员,可以调用父类中的非私有方法,但不能直接调用父类中的私有成员。
方法覆写:指子类定义了与父类中同名的方法。
super()可以从子类中调用父类中的构造方法、普通方法、属性。
super调用父类的构造方法:语句必须放在子类构造方法的首行,父类没有构造方法时,会在父类中自动生成一个空的构造方法,然后通过在子类中用super();调用,若父类中构造了非空的构造方法,则不会再自动生成空构造方法,此时子类中调用父类的构造方法super();括号中要带参数。
this与super的区别

抽象类

定义及使用:
(1)包含一个抽象方法的类必须是抽象类;
(2)抽象类和抽象方法都要用abstract声明;
(3)抽象方法只需声明而不需实现;
(4)抽象类必须被子类继承,如果子类不是抽象类,必须覆写抽象类的全部抽象方法。

final关键字

声明时注意:
(1)final声明的类不能有子类;
(2)final声明的方法不能被子类覆写;
(3)final声明的变量会成为常量。

对象的多态性

(1)子类对象->父类对象 (向上转型)
(2)父类对象->子类对象 (向下转型)
注:向上转型是自动的,向下转型是强制的,必须明确指明要转型的子类的类型,(为保证转型成功)向下转型之前必须先有对象向上转型。
格式:
向上 父类 父类对象 = 子类实例;
向下 子类 子类对象 = (子类)父类实例;

posted @ 2019-09-27 18:13  LeeMayZ  阅读(227)  评论(3编辑  收藏  举报