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
- 可通过直接空格的输入,不用每次输出一句话再输入字符。例,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
- 将多余补充的输出删去
- 代码最终版:
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
- 代码终极版:
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
调试代码
- 使用 debug ,在循环处设置条件为 i==5 的断点
- 调试程序,输入 hallojava ,点击 Resume,快速执行到断点所在处
- 此时结果显示为
- 点击 Step Over,单步执行
- 最终结果为
- 直接用 run显示结果
- 使用命令行进行编译与执行