zoukankan      html  css  js  c++  java
  • String课后作业

    (一)、字符串加密

    设计思想:加密字符串时,将用户输入的字符串转换成字符数组,分别加三,最后将它们相加得到新的字符串,进行输出。解密亦然。

    程序流程图:

    源代码:

    //余尉兴 字符串加密 20151020
    import javax.swing.*;
    
    public class Secret {
        public static void main(String[] args){
            String s=JOptionPane.showInputDialog("加密按1
    解密按2");//用户决定加密解密
            
            if(s.equals("1"))
            {
                String s1=JOptionPane.showInputDialog("请输入需要加密的密码");
                String s3="";
                char[] s2=s1.toCharArray();//转换为字符数组
                for(int i=0;i<s1.length();i++)
                {
                    s2[i]=(char) (s2[i]+3);//依次加三
                    if(s2[i]>'Z')//如果超过Z对应的数值则减去26
                    {
                        s2[i]=(char) (s2[i]-26);
                    }
                    s3=s3+s2[i];//转换成字符串
                }
                JOptionPane.showMessageDialog(null,s3);
            }
            
            else if(s.equals("2"))
            {
                String s1=JOptionPane.showInputDialog("请输入需要解密的密码");
                String s3="";
                char[] s2=s1.toCharArray();//转换为字符数组
                for(int i=0;i<s1.length();i++)
                {
                    s2[i]=(char) (s2[i]-3);//依次减三
                    if(s2[i]<'A')//如果超过Z对应的数值则加上26
                    {
                        s2[i]=(char) (s2[i]+26);
                    }
                    s3=s3+s2[i];//转换成字符串
                }
                JOptionPane.showMessageDialog(null, s3);
            }
        }
    }

    运行结果:

    加密结果:

    解密结果:

    (二)、方法整理

    equal()的源代码:

    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;
    }

    length():

    public int length()
    返回此字符串的长度。长度等于字符串中 Unicode 代码单元的数量。
    指定者:
    接口 CharSequence 中的 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

    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(Locale)

    toLowerCase():

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

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

    返回:
    要转换为小写的 String
    另请参见:
    toLowerCase(Locale)

    trim()

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

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

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

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

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

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

    toCharArray():

    public char[] toCharArray()
    将此字符串转换为一个新的字符数组。
    返回:
    一个新分配的字符数组,它的长度是此字符串的长度,它的内容被初始化为包含此字符串表示的字符序列。
  • 相关阅读:
    js高程之作用域
    js继承的实现(原型/链、函数伪装)
    tween.js的API实践
    JavaScript高程第三版笔记(1-5章)
    flex布局使用方法简要汇总
    three.js中物体旋转实践之房门的打开与关闭
    遇见贵人的科学方法(通向财富自由学习笔记七)
    "活在未来" VS “活在当下”(通向财富自由学习笔记六)
    记CBS一次动人心魄的数据保卫战
    你的人生最重的枷锁是什么?(通向财富自由学习笔记五)
  • 原文地址:https://www.cnblogs.com/a1264393659/p/4906504.html
Copyright © 2011-2022 走看看