• 课后作业04_1


    课后作业1

    题目要求


    设计思想

    程序的功能是用户输入一段字符串之后,用户可以选择进行加密或解密。然后输入加密或解密时需要移动的位数。调用String.charAt(index)方法改变每一个字符,最后输出。

    程序流程图

    源代码

    import java.util.Scanner;

    public class Kaisa {

           String message;

           public void go(){

                  Scanner sc=new Scanner(System.in);

                  System.out.println("输入字符串");

                  message=sc.nextLine();

                  System.out.println("输入密码");

                  int key=sc.nextInt();

                  System.out.println("请选择: 1 加密 2 解密");

                  int choose=sc.nextInt();

                  String newM="";

                  if(choose==1){

                         char c;

                         for(int i=0;i<message.length();i++){

                                c=message.charAt(i);

                                if(c>90-key&&c<97||c>122-key){

                                              c-=26;

                                       }

                                       c+=key;

                                newM+=c;

                         }

                         System.out.println(newM);

                  }

                  else if(choose==2){

                         char c;

                         for(int i=0;i<message.length();i++){

                                c=message.charAt(i);

                                if(c>=97&&c<97+key||c<65+key){

                                       c+=26;

                                }

                                c-=key;

                                newM+=c;

                         }

                         System.out.println(newM);

                  }

                  else System.out.println("没有这个选项");

           }

           public static void main(String[]args){

                  Kaisa k=new Kaisa();

                  k.go();

           }

    }

    结果截图

    课后作业2

    动手动脑1

    1.      问题

    请查看String.equals()方法的实现代码,注意学习其实现方法。(发表到博客作业上)

    2.      解答

        public boolean equals(Object anObject) {

            if (this == anObject) {

                return true;

            }

            if (anObject instanceof String) {

                String anotherString = (String)anObject;

                int n = value.length;

                if (n == anotherString.value.length) {

                    char v1[] = value;

                    char v2[] = anotherString.value;

                    int i = 0;

                    while (n-- != 0) {

                        if (v1[i] != v2[i])

                            return false;

                        i++;

                    }

                    return true;

                }

            }

            return false;

    }

    可以看出,首先它是判断传过来这个对象跟调用这个方法的对象是不是是同一个对象,如果是,那么返回true。紧接着判断两个字符串长度是否相等,若相等,把他们保存在两个数组里,然后挨个比较。

    动手动脑2

    1.      问题

    String类的方法可以连续调用:

    String str="abc";

    String result=str.trim().toUpperCase().concat("defg");

    请阅读JDK中String类上述方法的源码,模仿其编程方式,编写一个MyCounter类,它的方法也支持上述的“级联”调用特性,其调用示例为:

    MyCounter counter1=new MyCounter(1);

    MyCounter counter2=counter1.increase(100).decrease(2).increase(3);

    2.      解答

    通过查询JDK(在方法处按住ctrl,把鼠标移到上面,根据提示可以打开)。我发现String连续调用的方法的做法是每次返回一个String对象。于是我写了一下代码:

    public class MyCounter {

           private int value;

           public int get()

           {

                  return this.value;

           }

           public MyCounter()

           {}

           public MyCounter(int avalue)

           {

                  value=avalue;

           }

           public MyCounter increase(int avalue)

           {

                  return new MyCounter(value+avalue);

           }

           public MyCounter decrease(int avalue)

           {

                  return new MyCounter(value-avalue);

           }

           public static void main(String[] args)

           {

                  MyCounter counter1=new MyCounter(1);

                  MyCounter counter2=counter1.increase(100).decrease(2).increase(3);

                  System.out.println(counter2.get());

           }

    }

    运行结果是102,符合逻辑。

  • 相关阅读:
    JS的中数的取值范围的大小
    前端通过xlsx插件导入excel
    H5和安卓原生进行交互的操作流程记录
    javascript中字符串和数字之间互相转换的方法总结
    gitlab代码合并到主分支
    typeof和valueof、instance of 之间的区别
    javascript中map会改变原始的数组吗
    使用typescript来写react遇到的一些问题
    使用javascript进行时间数据格式的转换
    在vue的移动端项目中使用vue-echarts
  • 原文地址:https://www.cnblogs.com/w-honey/p/7744178.html
Copyright © 2020-2023  润新知