实验三 String类的应用
实验目的
掌握类String类的使用;
学会使用JDK帮助文档;
实验内容
1.已知字符串:"this is a test of java".按要求执行以下操作:(要求源代码、结果截图。)
统计该字符串中字母s出现的次数。
统计该字符串中子串“is”出现的次数。
统计该字符串中单词“is”出现的次数。
实现该字符串的倒序输出。
2.请编写一个程序,使用下述算法加密或解密用户输入的英文字串。要求源代码、结果截图。
3.已知字符串“ddejidsEFALDFfnef2357 3ed”。输出字符串里的大写字母数,小写英文字母数,非英文字母数。
1、源代码:
public class 第一小题 {
public static void main(String[] args) {
String str="This is a test of java";
int num1=0;
for(int i=0;i<str.length();i++) {
if(str.charAt(i)=='s')
num1++;
}
System.out.println("字母s出现的次数:"+num1);
}
}
结果截图:
设计思路:
书上有思路,翻了书。
2、源代码:
public class 第二小问 {
public static void main(String[] args)
{
String str="this is a test of java";
int num2=0;
for(int i=0;i<str.length();i++) {
if(str.charAt(i)=='i'&&str.charAt(i+1)=='s')
num2++;
}
System.out.println("该字符串中子串“is”出现的次数:"+num2);
}
}
运行截图:
3、源代码:
public class 第三小问 {
public static void main(String[] args)
{
String str="This is a test of java";
String s[]=str.split(" ");
int count=0;
for(int i=0;i<s.length;i++)
{
if(s[i].equals("is"));
count++;
}
System.out.println("该字符串中单词“is”出现的次数:"+count);
}
}
运行截图:
4、源代码:
public class 第四小问 {
public static void main(String[] args)
{
String str="This is a test of java";
char s[] = str.toCharArray();
for (int i=s.length-1;i>=0;i--)
{
System.out.print(s[i]);
}
}
}
运行截图:
设计思路:
运用书上111页的方法5转为数组,然后i--,遍历数组。
第二大题:
源代码:
import java.util.*;
public class 用户加密{
public static void main(String[] args)
{
Scanner s=new Scanner(System.in);
String b=s.nextLine();
char c[]=b.toCharArray();
char a[]=new char [c.length];
int i,j=0;
if(c.length==1)
{
System.out.println(c[0]);
}
if(c.length==2)
{
System.out.print(c[1]);
System.out.println(c[0]);
}
else
for(i=c.length-3;i<c.length;i++)
{
a[j]=c[i];
j++;
}
for(i=0;i<c.length-3;i++)
{
a[j]=c[i];
j++;
}
String str=String.valueOf(a);
System.out.print(a);
}
}
运行截图:
设计思路:
题目要求每个字符都向后移动三位,那有可能会出现字符是一位或两位的情况,也需要考虑;在网上查找了一些java语句。
第三大题:
源代码:
public class 大写小写非字母数 {
public static void main(String[] args)
{
String str="ddejidsEFALDFfnef2357 3ed";
int big=0, small=0, none=0;
for(int i=0;i<str.length();i++)
{
if(str.charAt(i)>=65&&str.charAt(i)<=90)
{
big++;
}
else if(str.charAt(i)>=97&&str.charAt(i)<=122)
{
small++;
}
else
none++;
}
System.out.println("大写字母数:"+big);
System.out.println("小写英文字母数:"+small);
System.out.println("非英文字母数:"+none);
}
}
运行结果截图:
设计思路:
这题的细节就是用ASCII码来当做判断条件。
课程总结
这周讲了面向对象高级篇,其中有继承、多态、覆写、重载、final和抽象类的基本概念。
继承:
只允许多层继承不能多重继承;
super和this不能同时使用,因为他们都要在首行;
子类不能直接访问父类中的私有操作,可以通过其他操作间接访问(setter或getter);
要注意一点,记得在父类中加一个无参数的构造方法。
多态:
向上转型为自动转型,向下转型为强制转型,需要首先向上转型再强制向下。
覆写:
3种访问权限的大小关系:private<default<public;
main方法不能使用this和super。
final关键字:
定义类的前面,不能有子类;
定义属性的前面,所声明的变量即为常量,常量不可修改;
定义方法的前面,不能被子类所覆写。
抽象类:java可以创建一种类,专门用来当做父类,这种类称为抽象类,相当于模板。
{{uploading-image-414638.png(uploading...)}}(这张图片不知为什么上传不了,内容是书上175页,关于抽象类的使用规则及定义)。
抽象类不能final,因为彼此矛盾。