赵纾寻  
a special world

实验三 String类的应用

实验目的

掌握类String类的使用;
学会使用JDK帮助文档;

实验内容

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

1)统计该字符串中字母s出现的次数。
2)统计该字符串中子串“is”出现的次数。
3)统计该字符串中单词“is”出现的次数。
4)实现该字符串的倒序输出。
2.请编写一个程序,使用下述算法加密或解密用户输入的英文字串。要求源代码、结果截图。

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

1(1)

实验代码:

package third;

public class S {
	
	public static void main(String args[]) {
		//输入语句
		String dr="this is a test of java";
		
        //设置计数器   
		int count=0;
		
		//将字符串变为字符数组
		char[]c=dr.toCharArray();
		
		//for循环查找并判断s出现次数
		for(int i=0;i<c.length;i++) {
			if(c[i]=='s') {
				count++;
			}
		}
		
		System.out.println(count);
	}

}

实验结果:

1(2)

实验代码:

package third;

public class Is {
	
	public static void main(String args[]) {
		
		String dr="this is a test of java";
		
		int count=0;
		int i=0;
		
        //从0位置开始查找指定的字符串“is”位置
		while(dr.indexOf("is",i)!=-1){
			count++;
		    i=dr.indexOf("is", i)+1;
	     }
		
		System.out.println(count);
	}

}

实验结果:

1(3)

实验代码:

package third;

public class Iss {

	public static void main(String args[]) {
		
		String dr="this is a test of java";
		
		int count=0;
		
		//照指定的字符串“is”对字符串拆分
		String[] a=dr.split(" ");
		
		//查找并判断作为单词单词“is”的位置
		for(String s:a) {
			if(s.equals("is")){
				count++;
			}
		}
		
		System.out.println(count);
	}
}

实验结果:

1(4)

实验代码:

package third;

public class This {

	public static void main(String args[]) {
        String dr="this is a test of java";
	    
        //将字符串变为字符数组
		char []c=dr.toCharArray();
		
		//倒序输出字符串
		for(int i=c.length-1;i>=0;i--) {
			System.out.print(c[i]);
		}
		
	}
}

实验结果:

2:

实验代码:

package third;

public class  Secret{

	public static void main(String[] args) {
		String str="Zasw";
		
		//加密
		String str0="";
		String str1="";
		char[] chr=str.toCharArray();
		for(int i=0;i<chr.length;i++) {
			int m=(int)chr[i];
			if(chr[i]>='A' && chr[i]<='Z') {
				if(chr[i]>='X') {
					m=m+3-26;
				}else {
					m=m+3;
				}
				str0=str0+(char)m;
			}
			else {
				if(chr[i]>='x') {
					m=m+3-26;
				}else {
					m=m+3;
				}
				str0=str0+(char)m;
			}
		}
		System.out.println(str0);
		
		//解密
		char[] chr1=str0.toCharArray();
		for(int i=0;i<chr1.length;i++) {
			int m=(int)chr1[i];
			if(chr1[i]>='A' && chr1[i]<='Z') {
				if(chr1[i]<='a') {
					m=m-3+26;
				}else {
					m=m-3;
				}
				str1=str1+(char)m;
			}
			else {
				if(chr1[i]<='c') {
					m=m-3+26;
				}else {
					m=m-3;
				}
				str1=str1+(char)m;
			}
		}
		System.out.println(str1);
		
	}

}
	

实验结果:

3:

实验代码:

package third;

public class A {

	public static void main(String[] args) {
		
		String str="ddejidsEFALDFfnef2357 3ed";
		
		//将字符串转换成字符,存到字符数组里面
		char[] cha=str.toCharArray();
		int daxie = 0, xiaoxie = 0,qita = 0;
		
		//依次取出每一个字符进行判断
		for(int i=0;i<cha.length;i++) {
			
			//将字符强行转换成整数
			int m=cha[i];
			
			//如果转换的数在A到Z之间则字符为大写字母
			 if(m>='A'&&m<='Z' ) {
				daxie++;
			}
			//如果转换的数在a到z之间则字符为小写字母
			else if(m>='a'&&m<='z' ) {
				xiaoxie++;
			} 
			//其他则是非英文字母
			else {
				qita++;
			}
		}
		
		System.out.println("大写字母数:"+daxie+"个");
		System.out.println("小写字母数:"+xiaoxie+"个");
		System.out.println("非英文字母数:"+qita+"个");
	}
}

实验结果:

实验过程:

第一题参照老师上课讲的以及jdk上写的String类方法,运用不同的构造或者普通方法,将字符串“this is a test of java”转换为字符数组或进行拆分等,最后输出结果。第二题稍复杂,首先将字符串拆分为单个字符,再通过for循环取出每个字符进行判断后,将字符强行转换成整数,再用if语句进行判断输出每个字母后移三位的结果。为保证无论是解密还是加密,最后输出的结果必然是一串英文字母,故限制了长度(m=m±3+26)。
第三题过程也是类似第二题。

课程总结:

1.继承
①通过子类扩展父类功能(class 父类{} class 子类 extends 父类{})。
②子类不可直接访问父类的私有操作(要通过setter或getter),但可调用父类私有方法。
③子类对象实例化之前先调用父类的构造方法。值得注意的是,父类的构造方法中既有无参构造方法(可系统给,可自己写)又有有参构造方法,我们需要在父类中自己写上一个无参构造,防止调用时this与super并用时报错(super调用无参构造)。
④覆写时,子类只可扩大权限,不可缩小(例父:private,子:public)。
⑤因this与super都需要放在构造方法的首行,故不可同时出现。且均不可用于main方法中。
2.final关键字:
①使用final声明的类不能有子类。
②final声明的方法不能被子类覆写(即不能被继承)。
③final声明的变量即成为常量,常量不可被修改。
3.抽象类
普通类不可有抽象方法,抽象类可以有普通方法及构造方法。
4.多态性
首先进行向上转换,才能进行向下强制类型转换。

学习总结:

我的基础确实不太好,还需要花很多时间。有点跟不上老师的节奏。

posted on 2019-09-27 21:59  赵纾寻  阅读(167)  评论(0编辑  收藏  举报