④ Step Out(Shift+F8):如果在调试的时候进入了一个方法,并觉得该方法没有问题,就可以使用stepout跳出该方法,返回到该方法被调用处的下一行语句。值得注意的是,该方法已执行完毕。
⑤ Run to Cursor:将程序运行到光标处。
可使用Resume(快捷键F9)直接运行完毕,如下图:
4、条件断点
如果想查看大循环中出现的问题,可以通过条件断点来解决。如下图所示设置条件断点,使用Resume(快捷键F9)从上一个断点直接运行到此条件断点。
『要求』:通过命令行和IDEA两种方式实现,在IDEA下练习调试程序。
1、设计思路我们知道凯撒密码是一种代换密码。他的基本思想是:通过把字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。位数就是凯撒密码加密和解密的密钥。
我要实现使用凯撒密码在不同密钥下对明文,进行加密;或对密文进行解密。
shiyan1.java
/** * Created by SXX on 2018/3/31 */ import java.io.*; import java.util.Scanner; public class shiyan1 { public static void main(String[] args) { EncryptAndDecrypt person = new EncryptAndDecrypt(); System.out.print("请选择加密还是解密:(加密输入1,解密输入2)"); Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); if (n == 1) { System.out.print("请输入明文:"); Scanner scanner1 = new Scanner(System.in); String m = scanner1.nextLine(); System.out.print("请输入密钥:"); Scanner scanner2 = new Scanner(System.in); int k = scanner2.nextInt(); try { String serct = person.encrypt(m, k); System.out.println("密文是:" + serct); } catch (EadException e){ System.out.println(e.warnMess()); } } else { System.out.print("请输入密文:"); Scanner scanner1 = new Scanner(System.in); String m = scanner1.nextLine(); System.out.print("请输入密钥:"); Scanner scanner2 = new Scanner(System.in); int k = scanner2.nextInt(); try { String source = person.decrypt(m, k); System.out.print("明文是:" + source); } catch (EadException e){ System.out.println(e.warnMess()); } } } }EncryptAndDecrypt.java //凯撒密码
public class EncryptAndDecrypt { String encrypt(String sourceString, int password) throws EadException{ //加密算法 char[] c = sourceString.toCharArray(); int m = c.length; for (int i = 0; i < m; i++) { if(c[i]>122||c[i]<65||(c[i]>90&&c[i]<97)){ throw new EadException(sourceString); } int mima = (c[i] - \'a\' + password) % 26 + \'a\'; //加密 c[i] = (char) mima; } return new String(c); //返回密文 } String decrypt(String sourceString, int password) throws EadException{ //解密算法 char[] c = sourceString.toCharArray(); int m = c.length; for (int i = 0; i < m; i++) { if(c[i]>122||c[i]<65||(c[i]>90&&c[i]<97)){ throw new EadException(sourceString); } int n = c[i] - \'a\' - password; if (n <= 0) { n = n + 26; } int mima = n % 26 + \'a\'; //解密 c[i] = (char) mima; } return new String(c); //返回明文 } }EadException.java //自定义异常类
public class EadException extends Exception{ String message; public EadException(String sourceString){ message = "所输入的字符不符合要求"; } public String warnMess(){ return message; } } 3、运行结果 命令行实现:正常情况
边界情况