班级 计科1班 学号 20188390 姓名 宋志豪
实验三 String类的应用
一、实验目的
1.掌握类String类的使用;
2.学会使用JDK帮助文档;
二、实验内容
1.已知字符串:"this is a test of java".按要求执行以下操作:(要求源代码、结果截图。)
(1)统计该字符串中字母s出现的次数。
实验代码
package 字符串操作;
public class Main {
public static void main(String[] args) {
String str = "this is a test of java";
int count=0;//用来计数
for(int i =0;i<str.length();i++){
char c = str.charAt(i);
if(c == 's'){
count++;
}
}
System.out.println("字母s出现的次数为:"+count);
}
}
实验结果
(2)统计该字符串中子串"is"出现的次数。
实验代码
package 字符串操作;
public class Main1 {
public static void main(String[] args) {
int num = beginIndex("this is a test of Java","is");
System.out.println("字符串is出现的次数:"+num);
}
public static int beginIndex(String str,String substr){
int count = 0;
for(int i=0;i<str.length()+1-substr.length();i++) {
if(str.substring(i, substr.length()+i).equals(substr)) {
count++;
}
}
return count;
}
}
实验结果
(3)统计该字符串中单词"is"出现的次数。
实验代码
package 字符串操作;
public class Main2 {
public static void main(String[] args) {
int num = beginIndex("This is a test of Java","is");
System.out.println("字符串is出现的次数:"+num);
}
public static int beginIndex(String str,String substr){
int count = 0;
for(int i=0;i<str.length()+1-substr.length();i++) {
if(str.substring(i, substr.length()+i).equals(substr)) {
i=i-1;
char c = str.charAt(i);
if(c == ' '){
count++;
}
i=i+1;
}
}
return count;
}
}
实验结果
(4)实现该字符串的倒序输出。
实验代码
package 字符串操作;
public class Main3 {
public static void main(String[] args) {
StringBuffer sb=new StringBuffer("this is a test of java");
System.out.println(sb.reverse().toString());
}
}
实验结果
2.请编写一个程序,使用下述算法加密或解密用户输入的英文字串。要求源代码、结果截图。
实验代码
package 加密;
import java.util.Scanner;
public class 加密 {
public static void main(String[] args) {
System.out.print("请输入一个字符串:");
Scanner sc=new Scanner(System.in);
String str=sc.nextLine();
char c[]=str.toCharArray();
char d[]=new char[50];int j=0;
for(int i = c.length-3;i<c.length;i++) {
d[j]=c[i];
j++;
}
for(int i=0;i<c.length-3;i++){
d[j]=c[i];
j++;
}
System.out.print(d);
}
}
实验结果
3.已知字符串"ddejidsEFALDFfnef2357 3ed"。输出字符串里的大写字母数,小写英文字母数,非英文字母数。
实验代码
package 大小写;
public class 大小写 {
public static void main(String[] args) {
String str="ddejidsEFALDFfnef2357 3ed";
int 大写=0;int 小写=0;int 其他=0;
for(int i =0;i<str.length();i++){
char c = str.charAt(i);
if(c>='a'&&c<='z'){
小写++;
}else if(c>='A'&&c<='z'){
大写++;
}else{
其他++;
}
}
System.out.println("大写字母个数为:"+大写);
System.out.println("小写字母个数为:"+小写);
System.out.println("其它字符个数为:"+其他);
}
}
实验结果
实验总结
第一大题、
对String类的掌握及使用,在做题中用到的有Length():获取当前字串长度,charAt(int index):获取当前字符串对象下标index处的字符,substring():从指定位置开始一直取到尾进行字符串的截取,以及在帮助里找到的StringBuffer():实现对字符串的逆序。
使用对的方法就能做出,是基础的考察。
第二大题、首先想到的是ASCII值的不同,从这方面去实现这道题的要求只能改变位置,而且很麻烦:
直到最后跟室友的讨论,得到,判断出原码的后三位,将它们赋给新数组的前三位,一一输出,在将剩下的元素意义存入新数组的对应位置,进行输出的方法,暂时只能做到这种程度。
第三大题、获取字符串长度,用for循环判断,进行累加。
课程总结
继承:1、在Java类中只允许单一继承,即一个子类只可以继承一个父类,且子类将继承父类的非私有属性和方法。
2、父类与子类只能一对一,即一个父类下面只有一个子类,但是那个子类可以作为父类进行下一次的继承。
3、方法的重载与复写:在重载中,方法名称相同,参数的类型或者个数不同,而覆盖都是相同的。覆盖只有发生在父类与子类之间,而重载可以发生在同一类中。
4、super()方法
(1)super()从子类中调用父类的构造方法,this()在同一类内调用其它方法。
(2)super()和this()均需放在构造方法内第一行,所以super()与this不能同时出现。