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. Delphi的保存文件对话框-TsaveDialog

    TsaveDialog继承于TOpenDialog,只介绍以下几个内容: 1.TsaveDialog如何设定为保存的默认路径是当前程序所在的文件夹: 默认目录是当前程序所在目录应设置属性Initial ...

  2. Linux学习——定义命令行函数(cd .. -> ..)

    在使用shell的时候,每天要面对各种命令行,比如ls , cd .. 等 抱着简单,可依赖的思想.有些可以简化的操作可以要通过在 ~/.bashrc 中进行添加: 1. cd .. -> .. ...

  3. 深入浅出Docker(三):Docker开源之路

    背景 Docker从一开始的概念阶段就致力于使用开源驱动的方式来发展,它的成功缘于国外成熟的开源文化氛围,以及可借鉴的社区运营经验.通过本文详细的介绍,让大家可以全面了解一个项目亦或者一项技术是如何通 ...

  4. LeetCode——Valid Anagram

    Description: Given two strings s and t, write a function to determine if t is an anagram of s. For e ...

  5. ICMP重定向及其攻防技术

    1.ICMP重定向概念: ICMP重定向技术,是用来提示主机改变自己的主机路由从而使路由路径最优化的一种ICMP报文.其概念理解的要义是原主机路由不是最佳路由,而其默认网关提醒主机优化自身的主机路由而 ...

  6. Windows Phone 几种弹出框提示方式

    首先,我们需要在网络上下载一个Coding4Fun 然后,引用  using Coding4Fun.Phone.Controls.Toolkit;                using Codin ...

  7. git下载和上传项目

    首先是git的下载和安装: https://www.cnblogs.com/chenxqNo01/p/6372933.html git的简单使用: 从码云 clone 项目: git clone ht ...

  8. Java 泛型 详解

    一.什么是泛型 本质而言,泛型指的是参数化的类型.参数化的类型的重要性是:它能让你创建类.接口和方法,由它们操作的数据类型被指定为一个参数.操作参数化类型的类.接口或方法被称为泛型,如泛型类或泛型方法 ...

  9. nginx软件的编译安装步骤

    1.1 检查软件安装的系统环境 [root@web02 conf]# cat /etc/redhat-release CentOS release 6.8 (Final) [root@web02 co ...

  10. ZOJ 3203 Light Bulb

    Compared to wildleopard's wealthiness, his brother mildleopard is rather poor. His house is narrow a ...