實驗一 Java開發環境的熟悉
實驗內容及步驟
使用JDK編譯、運行簡單的Java程序
命令行下程序開發:
- 在命令行下建立實驗目錄,進入該目錄后創建exp1目錄
- 敲入以下代碼:
package exp1;
import java.util.Scanner;
public class Hello{
public static void main(String[] args){
System.out.println("Input your first name, please:");
Scanner s = new Scanner(System.in);
String name = s.next();
System.out.println("Hello " + name + " !");
}
}
將Hello.java代碼保存到exp1目錄后,用命令行編譯運行通過
使用IDEA編輯、編譯、運行、調試Java程序
- 創建HelloJDB文件,輸入下面代碼:
package exp1;
public class HelloJDB {
public static void main(String[] args) {
int i = 5;
int j = 6;
int sum = add(i, j);
System.out.println(sum);
sum = 0;
for(i=0; i< 100; i++)
sum += i;
System.out.println(sum);
}
public static int add(int augend, int addend){
int sum = augend + addend;
return sum;
}
}
編譯運行結果如下:
-
IDEA的斷點設置比較簡單,如果你想在某行代碼處設置斷點,只需在該行代碼的最左端鼠標左鍵點一下即可:
-
接着使用Debug進行調試,代碼運行到第14行停止:
練習-1
實現凱撒密碼,並進行測試
- 實現凱撒密碼代碼如下:
package exp1;
import java.io.*;
public class Caesar{
public static void main(String[] args){
String s="";
int k=0;
char a[];
System.out.print( "請問:需要加密(0)or解密(1):" );
s=input();
k=Integer.parseInt(s);
if(k==0){
System.out.print("請輸入你需要加密的密鑰(K):");
s=input();
k=Integer.parseInt(s);
System.out.print( "請輸入你需要加密的明文(a-z):" );
s=input();
a=s.toCharArray();
System.out.println("加密成功!!");
System.out.print("密文是:");
int i=0;
while(i<a.length) {
if(a[i]==' '){
System.out.print(' ');
i++;
continue;
}
if(a[i]>='a'&&a[i]<='z') {
System.out.print((char) ((a[i] + k - 'a') % 26 + 'a'));
}
i++;
}
}
else{
System.out.print("請輸入你需要解密的密鑰(K):");
s=input();
k=Integer.parseInt(s);
System.out.print( "請輸入你需要解密的密文(a-z):");
s=input();
a=s.toCharArray();
System.out.println( "解密成功!!" );
System.out.print("明文是:");
int i=0;
while(i<a.length) {
if(a[i]==' '){
System.out.print(' ');
i++;
continue;
}
if(a[i]>='a'&&a[i]<='z') {
System.out.print((char) ((a[i] - k - 'a' + 26) % 26 + 'a'));
}
i++;
}
}
}
public static String input(){
String s="";
try{
BufferedReader in =new BufferedReader(new InputStreamReader(System.in));
s=in.readLine();
}
catch(IOException e){}
return s;
}
}
- 運行結果如下:
設計過程
凱撒密碼實質就是移位密碼,密鑰為3,而字符在計算機中的存儲都是以ASCII碼的形式存儲的,所以只要在用戶輸入的字符串每位加3便能得加密到一串密文,解密的過程也與這類似,這兩點都是比較好實現的。關鍵在於要取得用戶輸入的字符串,在之前的學習中我們學過用Scanner讓用戶輸入字符,而在本周的學習中又學習了IO流的輸入輸出,因此為了檢驗自己對新的知識的掌握程度,我決定用IO流來讓用戶輸入,再將字符串轉換成字符數組,這樣操作起來便方便了許多。最終我在原來的凱撒密碼的基礎上進行了改進,讓用戶自己輸入密鑰,並且成功實現了加解密的功能。
PSP時間
步驟 | 耗時 | 百分比 |
---|---|---|
需求分析 | 20min | 13.8% |
設計 | 30min | 20.7% |
代碼實現 | 60min | 41.4% |
測試 | 15min | 10.3% |
分析總結 | 20min | 13.8% |
心得體會
第一次做Java實驗,總體來講過程還是比較順利,題目也相對比較簡單。我覺得做實驗的時候,首先應該保持自己的思路清晰,心中要有個大概的框架,知道自己應該分幾步去做,哪些地方容易實現,難點在哪。接下來就是攻破難點,通過教材或者百度解決自己的問題所在,當難點解決之后,這個實驗基本就成功一大半了,剩下的問題可能就是自己在編譯過程中的粗心所導致的一些小問題,這些都比較容易解決。此外,我們以后在編代碼的時候要盡量模塊化,這樣能使得代碼的可讀性較強,修改起來也比較容易,不要把所有代碼都寫到一個main()函數里。