zoukankan      html  css  js  c++  java
  • 课后作业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,符合逻辑。

  • 相关阅读:
    使用youtube-dl下载B站视频
    【北邮人论坛帖子备份】14 考公与考研、入党、秋招
    观《菊次郎的夏天》有感
    git远端分支改名并以当前分支为base新建分支
    依赖明明存在pom.xml却报Dependency 'groupId:artifactId:version' not found的错
    在服务器上搭建git服务
    【北邮人论坛帖子备份】【秋招】21届渣硕BAT后端研发上岸心得
    【北邮人论坛帖子备份】【心得】做科研写论文的一些小经验
    【北邮人论坛帖子备份】 图森同学 | Gala:一个北邮非典型学霸的成长之路
    Python-for循环
  • 原文地址:https://www.cnblogs.com/w-honey/p/7744178.html
Copyright © 2011-2022 走看看