第五周课程总结&试验报告(三)
实验三 String类的应用
实验目的
掌握类String类的使用;
学会使用JDK帮助文档;
实验内容
1.已知字符串:"this is a test of java".按要求执行以下操作:(要求源代码、结果截图。)
统计该字符串中字母s出现的次数。
实验代码:
package number1;
public class zifu {
public static void main(String[] args) {
String num="this is a test of java";
int sum=0,j=0;
while(j<num.length()) { \\循环语句进行判断;
if(num.indexOf('s',j)>0) { \\num.indexOf('s',j)是从num中的j号位置开始查找s;
j=num.indexOf('s',j)+1; \\如果符合条件就让j和sum加一;
sum++;
}else if(num.indexOf('s',j)<0){ \\如果num.indexOf('s',j)小于0则说明从j位开始没有s;
break; \\条件成立则结束循环;
}
}
System.out.println(sum); \\输出sum的值;
}
}
注意:
在num.indexOf('s',j)是从j位开始包括第j位,所以j要加一,如果没有加一就会一直是最初的位置
实验结果:
统计该字符串中子串“is”出现的次数。
实验代码:
package number1;
public class zifu {
public static void main(String[] args) {
String num="this is a test of java";
char tom[]=num.toCharArray(); \\将num转化为字符型数组
int sum=0,j=0;
while(j<num.length()) { \\循环语句进行判断;
j=num.indexOf('i',j); \\num.indexOf('s',j)是从num中的j号位置开始查找i;
if(j>0&&tom[j+1]=='s') { \\j>0说明找到一个i的位置同时数组第(j+1)是s;
j++; \\如果符合条件就让j和sum加一;
sum++;
}else if(j<0){ \\j<0意味着从j位开始后面没有i;
break; \\条件成立则结束循环
}
}
System.out.println(sum); \\输出sum的值;
}
}
实验结果:
统计该字符串中单词“is”出现的次数。
实验代码:
package number1;
public class zifu {
public static void main(String[] args) {
String num="this is a test of java";
String tum[]=num.split(" "); \\按空格对num进行分离并转换成数组;
int sum=0,j;
for(j=0;j<tum.length;j++) { \\循环语句进行判断;
if(tum[j].equals("is")) { \\比较数组中所有的字符是否是is;
sum++; \\条件成立sum加一;
}
}
System.out.println(sum); \\输出sum;
}
}
实验结果:
实现该字符串的倒序输出。
实验代码:
package number1;
public class zifu {
public static void main(String[] args) {
String num="this is a test of java";
char tum[]=num.toCharArray(); \\将num转化为字符型数组
int j;
for(j=tum.length-1;j>=0;j--) { \\循环语句;
System.out.print(tum[j]); \\从最后一位开始输出;
}
}
}
实验结果:
2.请编写一个程序,使用下述算法加密或解密用户输入的英文字串。要求源代码、结果截图。
实验代码:
package number1;
import java.util.Scanner;
public class zifu {
public static void main(String[] args) {
Scanner sum = new Scanner(System.in); \\输入值
String num = sum.nextLine(); \\赋值给num
char tum[]=num.toCharArray(),hum[]=num.toCharArray(); \\将num转化为字符型数组
int j,i,xum;
for(j=xum=tum.length-1,i=0;i<=xum;i++) { \\循环语句;
if(i+2<j) { \\如果向后移两位后的位置数小于该字符数组的总长度
hum[i+2+1]=tum[i]; \\把值放入变化后的位置数加一中去
}else if(i+2>=j) { \\如果向后移两位后的位置数大于该字符数组的总长度
hum[i+2-j]=tum[i]; \\把值放入多出该字符数组的总长度的数值的位置中
}
if(i==xum) { \\条件成立则所有的数都进行了移位
for(j=tum.length,i=0;i<j;i++) { \\循环输出变化后的数
System.out.print(hum[i]);
}
}
}
}
}
实验结果:
3.已知字符串“ddejidsEFALDFfnef2357 3ed”。输出字符串里的大写字母数,小写英文字母数,非英文字母数。
实验代码:
package number1;
public class zifu {
public static void main(String[] args) {
String num="ddejidsEFALDFfnef2357 3ed";
char tum[]=num.toCharArray(); \\将num转化为字符型数组
int j,i,a=0,b=0,c=0;
for(j=tum.length,i=0;i<j;i++) { \\循环语句;
if(tum[i]>='a'&&tum[i]<='z') { \\条件成立则说明是小写字母
a++; \\a加一
}else if(tum[i]>='A'&&tum[i]<='Z') { \\条件成立则说明是大写字母
b++; \\b加一
}else { \\剩下的就是非英文字母数
c++; \\c加一
}
}
System.out.println("小写字母数:"+a);
System.out.println("大写字母数:"+b);
System.out.println("非英文字母数:"+c);
}
}
实验结果:
总结:
首先我先总结一下这次作业的感受:
1)要仔细读题,了解题目的要求,我最后一道题就是没有仔细读题把分辨字母的个数读成了分辨并输出字母导致我写了好久最后才发现题目要求白费一番功夫。
2)要仔细去深入了解String的相关方法,就如我写的第一个代码的注意就是没有了解清楚num.indexOf('s',j)的查找。
3)要多去记那些方法和一些常用的单词,不要等到用的时候再去翻书
一)Final
(1)、final在java中表示的意思是最终的意思。也可以称为完结器。
(2)、可以使用final关键字声明类、属性、方法。
(3)、使用final声明的类不能有子类;
(4)、使用final声明的方法不能被子类所覆写;
(5)、使用final声明的变量即成为常量,常量不可以修改。
(6)、使用final声明变量时,要求全部的字母大写
二)super关键字
1).使用super可以从子类中调用父类中的构造方法、普通方法、属性
2).super语句必须放在子类构造方法的首行,因此与this不能同时出现
3).在主方法中不能使用this和super方法
三)继承(extends)
继承(extends)只能发生在类(class)和类之间,接口(interface)和接口之间。
实现(implements)就不一样了,是用在类和接口之间,并且能多重实现。
其中子类继承父类的所有属性和方法但是不包括私有的方法和变量。