05课堂问题整理
1、古罗马皇帝凯撒在打仗时曾经使用过以下方法加密军事情报:请编写一个程序,使用上述算法加密或解密用户输入的英文字串要求设计思想、程序流程图、源代码、结果截图。
①设计思想
首先输入字符串,再定义一个char类型的数组,一个char类型变量。用for循环,将String类型字符串转化为char类型数组,来初始化char类型的数组。再比较数组中每一个字符在哪个范围,转化为相应的字符存在char类型变量中,然后输出。
②程序流程图
③源代码
package demo;
import java.util.Scanner;
public class JiaMi {
public static void main(String [] args){
Scanner input =new Scanner(System.in);
System.out.println("请输入一个字符串:");
String str=input.next();
input.close();
int len=str.length();//字符串长度
char ch[];
char ch1=0;
for(int i=0;i<len;i++){
ch=str.toCharArray();//将String类型的字符串转化成char类型的数组
if(ch[i]>='a'&&ch[i]<='w')
ch1=(char)(ch[i]+3);
else if(ch[i]>='x'&&ch[i]<='z')
ch1=(char)(ch[i]-23);
else if(ch[i]>='A'&&ch[i]<='W')
ch1=(char)(ch[i]+3);
else if(ch[i]>='X'&&ch[i]<='Z')
ch1=(char)(ch[i]-23);
else System.out.println("Error");
System.out.print(ch1);
}
}
}
④结果截图
2、课后作业之字串加密、动手动脑之String.equals()方法、整理String类的Length()、charAt()、 getChars()、replace()、 toUpperCase()、 toLowerCase()、trim()、toCharArray()使用说明、阅读笔记发表到博客园。
(1)字符串加密:在上面。
(2)①请运行以下示例代码StringPool.java,查看其输出结果。如何解释这样的输出结果?从中你能总结出什么?
public class StringPool {
public static void main(String args[])
{
String s0="Hello";
String s1="Hello";
String s2="He"+"llo";
System.out.println(s0==s1);//true
System.out.println(s0==s2);//true
System.out.println(new String("Hello")==new String("Hello"));//false
}
}
分析:内容相同的字串常量只保存一份以节约内存,所以s0,s1,s2实际上引用的是同一个对象。所以输出结果是true。当直接使用new关键字创建字符串对象时,虽然值一致,但仍然是两个独立的对象,导致输出结果为false。
②请查看String.equals()方法的实现代码,注意学习其实现方法。
public boolean equals(Object anObject)
{
//如果是同一个对象
if (this == anObject)
{
return true;
}
//如果传递进来的参数是String类的实例
if (anObject instanceof String)
{
String anotherString = (String)anObject;
int n = count;//字符串长度
if (n == anotherString.count) //如果长度相等就进行比较
{
char v1[] = value;//取每一个位置的字符
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) //对于每一位置逐一比较
{
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}
对于object类的equals()方法,判断调用该方法的对象与要比较的对象是不是同一个对象(判断地址),而String类中的equals()方法,则判断当前字符串与传递进来的字符串的内容是否一致。
(3)string.length()用来求字符串的长度,返回字符串的长度。
string.charAt()为取该字符串某个位置的字符。
string.getChars()为将这个字符串中的字符复制到目标字符数组。
string.replace()为将原string 中的元素或子串替换。返回替换后的string。
string.toUpperCase()为将字符串string中字符变为大写。
string.toLowerCase()为将字符串string中字符变为小写。
string.trim()为去除字符串的头为空格。
string.toCharArray()为将字符串转换为字符数组。