05课堂问题整理

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

}

}

分析:内容相同的字串常量只保存一份以节约内存,所以s0s1s2实际上引用的是同一个对象。所以输出结果是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()为将字符串转换为字符数组。

 

 

 

原文地址:https://www.cnblogs.com/hjy415/p/6005593.html