实验三 String类的应用
实验目的
掌握类String类的使用;
学会使用JDK帮助文档;
实验内容
1.已知字符串:"this is a test of java".按要求执行以下操作:(要求源代码、结果截图。)
统计该字符串中字母s出现的次数。
统计该字符串中子串“is”出现的次数。
统计该字符串中单词“is”出现的次数。
实现该字符串的倒序输出。
实验结果:
实验源码:
public class Jiemi {
public static void main(String[] args) {
String str=new String("This is a test of java");
System.out.println(test1(str));
System.out.println(test2(str));
System.out.println(test3(str));
test4(str); //主类里面返回所有的值
}
public static int test1(String str) {
int count = 0;
int i;
for (i = 0; i < str.length(); i++) { //遍历字符串
if ('s' == str.charAt(i)) { //判断
count++;
}
}
return count;
}
public static int test2(String str){
int count2 =0;
count2=str.indexOf("is"); //查找is的个数并赋值给count2
return count2;
}
public static int test3(String str){
int count3 =0;
String a[]=str.split( " "); //对字符串以空格来进行分割
for(String e:a) { //这里用到foreach用法
if (e.equals("is")) { //查找字符串中的is单词
count3++;
}
}
return count3;
}
public static void test4(String str){
StringBuffer sb = new StringBuffer(str);
sb.append(" "); //给原有的字符串倒序的情况下还可以自行添加字符串进行倒序,可以省略
System.out.println(sb.reverse().toString()); //对原有的字符串进行倒序并输出
}
}
总结:这个题目老师在上课的时候讲过,然后前面几个基本没啥大问题,就是最后一个倒叙的方法我是百度查到的方法,发现还蛮牛的。所以这个题目总体上还是蛮有挑战的。
2.请编写一个程序,使用下述算法加密或解密用户输入的英文字串。要求源代码、结果截图。
实验结果:
实验源码:
import java.net.SocketOption;
import java.util.Scanner;
public class Jiemi {
public static void JIAMI()
{
System.out.println("输入一个字符串");
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
char a[] = str.toCharArray(); //将字符串变成字符数组
char b[] = new char[100]; //声明一个数组,同时开辟空间大小为一百的内存
int j = 0;
for (int i = a.length - 3; i < a.length; i++) { //i从数组的第四位开始
b[j] = a[i];
j++;
} //将数组a的后三位给数组b
for (int i = 0; i < a.length - 3; i++) {
b[j] = a[i];
j++; //将前三位给数组b
}
System.out.println("加密后的密码为:");
System.out.println(b);
}
public static void main(String args[]) {
JIAMI();
System.out.println("加密成功,感谢使用");
}
}
总结:这个题目其实一开始流程图没怎么看懂的,可是请教了同学后感觉也还好吧,感觉自己理解能力有点差,然后就是第一个for循环那里我把i的初始条件搞错了,后面改回来。
3.已知字符串“ddejidsEFALDFfnef2357 3ed”。输出字符串里的大写字母数,小写英文字母数,非英文字母数。
实验结果:
实验源码:
import java.net.SocketOption;
import java.util.Scanner; //不需要
public class Jiemi {
public static void main(String args[]) {
String s="ddejidsEFALDFfnef2357 3ed";
int xx=0;
int dx=0;
int sz=0;
for(int i=0;i<s.length();i++)
{
char n=s.charAt(i); //返回字符串第i个字符
if(n>='a'&&n<='z') //根据ASCII值来进行区分
xx++;
else if(n>='A'&&n<='Z')
dx++;
else
sz++;
}
System.out.println("大写字母个数为:"+dx);
System.out.println("小写字母个数为:"+xx);
System.out.println("其它字符个数为:"+sz);
}
}
总结:char n=s.charAt(i);这一步一开始不知道使用,其他的都行。
课程总结
this关键字
1.可以使用this强调本类中的方法
2.可以表示类中的属性
3.this表示当前对象
注意:this必须放在首行,且this不能循环调用。
注:如果一个类中有多个构造方法的话,可以利用this关键字互相调用。
数组
1.数组的定义:
2.数组的声明和分配内存:
第二种方法:
注:Java数组的使用,必须经过声明数组和分配内存给数组,其中new则是编译器根据括号里的长度,在堆内存中开辟一块堆内存供该数组使用。
3.数组是引用数据类型,因此数组变量score所保存的并非是数组的实体,而是数组堆内存的参考地址。如图
4.在Java中取得数组的长度可以利用“数组名称.length”的形式,如图:
方法
1.方法的定义格式:
注:若果不需要传递参数到方法中,只要将括号写出,不必填入任何内容。如果方法没有返回值,则在返回值类型处要明确地写出void,此时,方法中的return语句可以省略。
2.方法的重载:方法的名称相同,但参数的类型和参数的个数不同。
自我总结
感觉学的知识越来越多了,而且基本上每个知识都要用上,知识的连贯性很强,如果有哪一点断了,做题目真的很伤脑袋。希望今后的学习能更加努力,好好复习学过的知识,并且能把知识点都给弄懂!加油3!