JAVA课程作业04

1 .请查看String.equals()方法的实现代码,注意学习其实现方法。

public boolean equals(Object anObject)
将此字符串与指定的对象比较。当且仅当该参数不为 null,并且是与此对象表示相同字符序列的 String 对象时,结果才为 true
覆盖:
Object 中的 equals
参数:
anObject - 与此 String 进行比较的对象。
返回:
如果给定对象表示的 String 与此 String 相等,则返回 true;否则返回 false

举例:s1.equals(s2)  :判断s1是否等于s2

   s1.equals(“ab”):判断s1是否等于字符串“ab”

 

 

2.字串加密:古罗马皇帝凯撒在打仗时曾经使用过以下方法加密军事情报:

 

 

 

请编写一个程序,使用上述算法加密或解密用户输入的英文字串要求设计思想、程序流程图、源代码、结果截图。

 

设计思想:

 

让用户选择要完成的功能:加密或解密,加密算法需要将输入的字符加3后在输出,解密算法需要将输入的字符减3后输出。

 

程序流程图:

 

 

 

源代码:

 1 //字串加密
 2 import javax.swing.JOptionPane;//引入JOptionPane类
 3 public class StringEncryption {
 4 
 5     public static void main(String[] args) {//JAVA程序入口
 6         //选项
 7         Object[] possibleValues = { "加密", "解密"};
 8         Object selectedValue = JOptionPane.showInputDialog(null, "请选择:", "Input",
 9         JOptionPane.INFORMATION_MESSAGE, null,possibleValues, possibleValues[0]); 
10         //加密
11         if(selectedValue.equals("加密")){
12             String inputValue = JOptionPane.showInputDialog("请输入要加密的字符串:");
13             String outputValue=new String();
14             for(int i=0;i<inputValue.length();i++){
15                 char flag = inputValue.charAt(i);
16                 if(flag>'W')//XYZ需要特殊对待
17                     flag=(char) (flag+3-26);
18                 else
19                     flag =(char) (flag+3);
20                 outputValue=outputValue+flag;
21             }
22             JOptionPane.showMessageDialog(null,"加密后的字符串为:"+outputValue);
23         }
24         //解密
25         else if(selectedValue.equals("解密")){
26             String inputValue = JOptionPane.showInputDialog("请输入要解密的字符串:");
27             String outputValue=new String();
28             for(int i=0;i<inputValue.length();i++){
29                 char flag = inputValue.charAt(i);
30                 if(flag<'D')//ABC需要特殊对待
31                     flag=(char) (flag-3+26);
32                 else
33                     flag=(char)(flag-3);    
34                 outputValue=outputValue+flag;
35             }
36             JOptionPane.showMessageDialog(null,"解密后的字符串为:"+outputValue);
37         }
38         //选择错误
39         //else 
40         //    JOptionPane.showMessageDialog(null,"没有这个选项");
41     }
42 
43 }

结果截图:

 

错误分析:

<1.不清楚选项消息框的使用方法,所以有了最后的一个else。

<2.总想着只用一个式子就解决所有的字符转换,结果一直没成功,浪费了很多时间。

 

 

3.整理String类的Length()、charAt()、 getChars()、replace()、 toUpperCase()、 toLowerCase()、trim()、toCharArray()使用说明、阅读笔记

 

length

public int length()
返回此字符串的长度。长度等于字符串中 Unicode 代码单元的数量。
指定者:
接口 CharSequence 中的 length
返回:
此对象表示的字符序列的长度。

实例:inputValue.length();

charAt

public char charAt(int index)
返回指定索引处的 char 值。索引范围为从 0length() - 1。序列的第一个 char 值位于索引 0 处,第二个位于索引 1 处,依此类推,这类似于数组索引。

如果索引指定的 char 值是代理项,则返回代理项值。

指定者:
接口 CharSequence 中的 charAt
参数:
index - char 值的索引。
返回:
此字符串指定索引处的 char 值。第一个 char 值位于索引 0 处。
抛出:
IndexOutOfBoundsException - 如果 index 参数为负或小于此字符串的长度。

 

getChars

public void getChars(int srcBegin,
                     int srcEnd,
                     char[] dst,
                     int dstBegin)
将字符从此字符串复制到目标字符数组。

要复制的第一个字符位于索引 srcBegin 处;要复制的最后一个字符位于索引 srcEnd-1 处(因此要复制的字符总数是 srcEnd-srcBegin)。

要复制到 dst 子数组的字符从索引 dstBegin 处开始,并结束于索引:

 

     dstbegin + (srcEnd-srcBegin) - 1
 
参数:
srcBegin - 字符串中要复制的第一个字符的索引。
srcEnd - 字符串中要复制的最后一个字符之后的索引。
dst - 目标数组。
dstBegin - 目标数组中的起始偏移量。
抛出:
IndexOutOfBoundsException - 如果下列任何一项为 true:
  • srcBegin 为负。
  • srcBegin 大于 srcEnd
  • srcEnd 大于此字符串的长度
  • dstBegin 为负
  • dstBegin+(srcEnd-srcBegin) 大于 dst.length

 

replace

public String replace(char oldChar,
                      char newChar)
返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。

如果 oldChar 在此 String 对象表示的字符序列中没有出现,则返回对此 String 对象的引用。否则,创建一个新的 String 对象,它所表示的字符序列除了所有的 oldChar 都被替换为 newChar 之外,与此 String 对象表示的字符序列相同。

示例:

"mesquite in your cellar".replace('e', 'o')
         returns "mosquito in your collar"
 "the war of baronets".replace('r', 'y')
         returns "the way of bayonets"
 "sparring with a purple porpoise".replace('p', 't')
         returns "starring with a turtle tortoise"
 "JonL".replace('q', 'x') returns "JonL" (no change)
 
参数:
oldChar - 原字符。
newChar - 新字符。
返回:
一个从此字符串派生的字符串,它将此字符串中的所有 oldChar 替代为 newChar

replace

public String replace(CharSequence target,
                      CharSequence replacement)
使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。该替换从字符串的开头朝末尾执行,例如,用 "b" 替换字符串 "aaa" 中的 "aa" 将生成 "ba" 而不是 "ab"。
参数:
target - 要被替换的 char 值序列
replacement - char 值的替换序列
返回:
所得 String
抛出:
NullPointerException - 如果 targetreplacementnull

 

toUpperCase

public String toUpperCase()
使用默认语言环境的规则将此 String 中的所有字符都转换为大写。此方法等效于 toUpperCase(Locale.getDefault())

注: 此方法与语言环境有关,如果用于应独立于语言环境解释的字符串,则可能生成不可预料的结果。示例有编程语言标识符、协议键、HTML 标记。例如,"title".toUpperCase() 在 Turkish(土耳其语)语言环境中返回 "T?TLE",其中“?”是 LATIN CAPITAL LETTER I WITH DOT ABOVE 字符。对于与语言环境有关的字符,要获得正确的结果,请使用 toUpperCase(Locale.ENGLISH)

返回:
要转换为大写的 String

toUpperCase

public String toUpperCase(Locale locale)
使用给定 Locale 的规则将此 String 中的所有字符都转换为大写。大小写映射关系基于 Character 类指定的 Unicode 标准版。由于大小写映射关系并不总是 1:1 的字符映射关系,因此所得 String 的长度可能不同于原 String

下表中给出了几个与语言环境有关和 1:M 大小写映射关系的一些示例。

 

语言环境的代码小写大写描述
tr (Turkish) \u0069 \u0130 小写字母 i -> 大写字母 I,上面有点
tr (Turkish) \u0131 \u0049 小写字母 i,无点 -> 大写字母 I
(all) \u00df \u0053 \u0053 小写字母 sharp s -> 两个字母:SS
(all) Fahrvergnügen FAHRVERGNÜN  
参数:
locale - 使用此语言环境的大小写转换规则
返回:
要转换为大写的 String

toLowerCase

public String toLowerCase()
使用默认语言环境的规则将此 String 中的所有字符都转换为小写。这等效于调用 toLowerCase(Locale.getDefault())

注: 此方法与语言环境有关,如果用于应独立于语言环境解释的字符串,则可能生成不可预料的结果。示例有编程语言标识符、协议键、HTML 标记。例如,"TITLE".toLowerCase() 在 Turkish(土耳其语)语言环境中返回 "t?tle",其中“?”是 LATIN SMALL LETTER DOTLESS I 字符。对于与语言环境有关的字符,要获得正确的结果,请使用 toLowerCase(Locale.ENGLISH)

 

返回:
要转换为小写的 String

toLowerCase

public String toLowerCase(Locale locale)
使用给定 Locale 的规则将此 String 中的所有字符都转换为小写。大小写映射关系基于 Character 类指定的 Unicode 标准版。由于大小写映射关系并不总是 1:1 的字符映射关系,因此所得 String 的长度可能不同于原 String

下表中给出了几个小写映射关系的示例:

语言环境的代码大写字母小写字母描述
tr (Turkish) \u0130 \u0069 大写字母 I,上面有点 -> 小写字母 i
tr (Turkish) \u0049 \u0131 大写字母 I -> 小写字母 i,无点
(all) French Fries french fries 将字符串中的所有字符都小写
(all) capiotacapchi capthetacapupsil capsigma iotachi thetaupsilon sigma 将字符串中的所有字符都小写
参数:
locale - 使用此语言环境的大小写转换规则
返回:
要转换为小写的 String

 

trim

public String trim()
返回字符串的副本,忽略前导空白和尾部空白。

如果此 String 对象表示一个空字符序列,或者此 String 对象表示的字符序列的第一个和最后一个字符的代码都大于 '\u0020'(空格字符),则返回对此 String 对象的引用。

否则,若字符串中没有代码大于 '\u0020' 的字符,则创建并返回一个表示空字符串的新 String 对象。

否则,假定 k 为字符串中代码大于 '\u0020' 的第一个字符的索引,m 为字符串中代码大于 '\u0020' 的最后一个字符的索引。创建一个新的 String 对象,它表示此字符串中从索引 k 处的字符开始,到索引 m 处的字符结束的子字符串,即 this.substring(km+1) 的结果。

此方法可用于截去字符串开头和末尾的空白(如上所述)。

返回:
此字符串移除了前导和尾部空白的副本;如果没有前导和尾部空白,则返回此字符串。

toCharArray

public char[] toCharArray()
将此字符串转换为一个新的字符数组。
返回:
一个新分配的字符数组,它的长度是此字符串的长度,它的内容被初始化为包含此字符串表示的字符序列。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2015-10-24 19:31  小么小儿郎  阅读(175)  评论(0编辑  收藏  举报