20145325张梓靖 实验一 "Java开发环境的熟悉"

程序设计过程

实验内容

  • 实现凯撒密码,并进行测试

编写代码

  • 使用java.util.Scanner进行输入,而它的方法里没有针对char的直接转换,所以选择输入数组定义为 String 类型。
  • 在运算过程中,需要将输入的字符串转变为字符的ASC11码,这样才可以对每个字符进行运算、转换。
  • 用 string.charAt(0),先收集到字符串中的每个字符(因为 string不能直接转化成ASC11相加减,只能先把 string转化为字符,再进行)
  • 然后对字符进行强制类型转化为 int ,这样才可以继续对字符的ASC11码进行运算。
  • 把转化后运算完的结果放入新定义的int数组中,必须定义int的数组,因为强制转换成了int,就只能用int的来装数据。
  • 当然,也可以再强制转换成char,只不过要把结果放入 char 数组里面,最后直接循环输出数组结果就好了。
  • 如果不直接再次强制转换成char的话,就在输出的时候再强制转化成 char 类型的就好。
  • 代码第一代:
import java.util.Scanner;
public class ExamOne {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
String[] ming=new String[100];
char[] mid=new char[100];
int[] mi=new int[100];
int time=0;
int i=0; for( i=0;true;i++){
System.out.printf("请输入第%d 字符%n",i);
ming[i]=scanner.next();
if(ming[i].charAt(0)=='#') {
break;
}
}
System.out.println("输入完毕了");
time=i;
System.out.println("i="+time); for( i=0;i<time;i++){
System.out.printf("转换第%d个字母%n",i);
mid[i]=ming[i].charAt(0);
mi[i]=((int)mid[i]-'a'+3)%26+'a';
System.out.printf("转换第%d个字母成功%n",i);
}
System.out.println("转换完了"); for( i=0;i<time;i++){
System.out.printf("输出第%d个字母%n",i);
System.out.println((char)mi[i]);
}
} }
  • 可通过直接空格的输入,不用每次输出一句话再输入字符。例,a b #(#是作为输入结束字符,不算作需进行转换的字符)
for( i=0;true;i++){
ming[i]=scanner.next();
if(ming[i].charAt(0)=='#') {
break;
}
}
  • 输入每一个字符时,必须用空格或者换行隔开,这是在选用 next 就决定好了的,因为没有 nextChar 的方法。

  • 但当直接用string.charAt()取得字符创中的每一个字符,这样就可以直接输入一串字符,不用空格或换行分隔了

  • 代码第二代:

public class ExamOne1 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
String ming="";
char[] mid=new char[100];
int[] mi=new int[100];
int time=0;
int i=0; System.out.println("请输入每个字符");
ming=scanner.nextLine(); System.out.println("输入完毕了");
time=ming.length();
System.out.println("i="+time); for( i=0;i<time;i++){
System.out.printf("转换第%d个字母%n",i);
mid[i]=ming.charAt(i);
mi[i]=((int)mid[i]-'a'+3)%26+'a';
System.out.printf("转换第%d个字母成功%n",i);
}
System.out.println("转换完了"); for( i=0;i<time;i++){
System.out.printf("%c",(char)mi[i]);
}
} }
  • 将多余补充的输出删去
  • 代码最终版:
public class ExamOne1 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
String ming="";
char[] mid=new char[100];
int[] mi=new int[100];
int time=0;
int i=0; System.out.println("请输入明文");
ming=scanner.nextLine(); time=ming.length(); for( i=0;i<time;i++){
mid[i]=ming.charAt(i);
mi[i]=((int)mid[i]-'a'+3)%26+'a';
} System.out.println("密文为:");
for( i=0;i<time;i++){
System.out.printf("%c",(char)mi[i]);
}
} }
  • 代码终极版:
import java.util.Scanner;
class Caesar{
public static char[] mid=new char[100];
public static int[] code=new int[100];
public static int time=0;
public static int i=0; public static void EncryptWrite(String write){
time=write.length(); for( i=0;i<time;i++){
mid[i]=write.charAt(i);
code[i]=((int)mid[i]-'a'+3)%26+'a';
} System.out.println("密文为:");
for( i=0;i<time;i++){
System.out.printf("%c",(char)code[i]);
} }
}
public class ExamOne1 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
String write=""; System.out.println("请输入明文");
write=scanner.nextLine(); Caesar.EncryptWrite(write); } }

调试代码

  • 使用 debug ,在循环处设置条件为 i==5 的断点

  • 调试程序,输入 hallojava ,点击 Resume,快速执行到断点所在处

  • 此时结果显示为

  • 点击 Step Over,单步执行

  • 最终结果为

  • 直接用 run显示结果

  • 使用命令行进行编译与执行

20145325张梓靖 实验一 "Java开发环境的熟悉"的更多相关文章

  1. 20145325张梓靖 实验三 "敏捷开发与XP实践"

    20145325张梓靖 实验三 "敏捷开发与XP实践" 程序设计过程 实验内容 使用 git 上传代码 git上传中遇到的问题 使用 git 相互更改代码 实现代码的重构 git ...

  2. 20145325张梓靖 实验五 "JAVA的网络编程"

    20145325张梓靖 实验五 "JAVA的网络编程" 实验内容 使用 JVAV语言 进行网络编程 对明文进行加密 设计过程 我完成的是客户端,服务端同伴 20145308刘昊阳 ...

  3. 20145325张梓靖 实验四 "Andoid开发基础"

    20145325张梓靖 实验四 "Andoid开发基础" 实验内容 使用 Android Studio 设计"Hello" 设计过程 创建项目 选择.xml中的 ...

  4. 20145325张梓靖 实验二"Java面向对象程序设计"

    20145325张梓靖 实验二"Java面向对象程序设计" 程序设计过程 实验内容 使用TDD的方式设计实现复数类 Complex 编写代码 设计实现复数类 Complex,复数类 ...

  5. 20145205 实验一 Java开发环境的熟悉

    实验内容 命令行下Java程序开发 IDEA下Java程序开发.调试 练习(通过命令行和Eclipse两种方式实现,在Eclipse下练习调试程序) 实现凯撒密码,并进行测试 实验要求 使用JDK编译 ...

  6. 实验一 Java开发环境的熟悉

    实验一 Java开发环境的熟悉(Linux + Eclipse) 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验要求 1.没 ...

  7. 20145308刘昊阳 《Java程序设计》实验一 Java开发环境的熟悉 实验报告

    20145308刘昊阳 <Java程序设计>实验一报告 实验名称 Java开发环境的熟悉 实验内容 使用JDK编译.运行简单的Java程序 2.使用Eclipse 编辑.编译.运行.调试J ...

  8. 实验一Java开发环境的熟悉

    实验一Java开发环境的熟悉 实验内容 •命令行下Java程序开发 •IDEA下Java程序开发.调试 •练习(通过命令行和Eclipse两种方式实现,在Eclipse下练习调试程序) •实现凯撒密码 ...

  9. 20145225《Java程序设计》实验一 Java开发环境的熟悉(Linux + Eclipse)

    20145225<Java程序设计> 实验一 Java开发环境的熟悉(Linux + Eclipse) 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑 ...

随机推荐

  1. MQTT的学习研究(十四) MQTT moquette 的 Callback API 消息发布订阅的实现

    在moquette-mqtt中提供了回调callback模式的发布和订阅但是在订阅之后没有发现有消息接收的方法,参看moquette-mqtt中Block,Future式的发布订阅基础是callbac ...

  2. Android ImageResizer:inSampleSize

    import android.annotation.TargetApi; import android.content.Context; import android.content.res.Reso ...

  3. T-SQL数据库备份

    /*1.--得到数据库的文件目录 @dbname 指定要取得目录的数据库名 如果指定的数据不存在,返回安装SQL时设置的默认数据目录 如果指定NULL,则返回默认的SQL备份目录名 */ /*--调用 ...

  4. checkbox的name与JavaBean的交互时发现的一个现象

    一个页面: <form action="reg.jsp" method="post"> <ul> <li>算法选择</ ...

  5. .net各版本framework官方下载地址

    版本 链接 说明 Microsoft .NET Framework 4(独立安装程序) https://www.microsoft.com/zh-cn/download/details.aspx?id ...

  6. python3安装后无法使用退格键的问题

    # 安装readline模块 yum -y install readline-devel # 进入Python安装目录 cd /usr/python/Python- # 重新安装 ./configur ...

  7. talib 中文文档(十四):Math Transform Functions 数学变换

    Math Transform Functions ACOS - Vector Trigonometric ACos 函数名:ACOS 名称:acos函数是反余弦函数,三角函数 real = ACOS( ...

  8. 快递API接口

    快递100        

  9. 通过html<map>标签给图片加链接

    前面我们有谈到了通过图片定位给一张图片添加多个链接,现在用另外一种方法来实现,用html<map>标签给图片加链接 <img src="/images/hlj.jpg&qu ...

  10. ReactiveCocoa 初学者使用

    skip 跳过几个信号,不接受 filter :过滤 ignore:忽略某一个值 take:从开始一共取N次的信号 ignoreValues 这个比较极端,忽略所有值,只关心Signal结束,也就是只 ...