20145120 《Java程序設計》實驗一實驗報告


20145120 《Java程序設計》實驗一實驗報告

實驗名稱:Java開發環境的熟悉

實驗目的與要求:

1.使用JDK編譯、運行簡單的Java程序;(第1周學習總結)

2.編輯、編譯、運行、調試Java程序。

實驗內容、步驟

我的實驗環境是Windows+IDEA
開始調試程序

只要想要設置斷點的地方的左邊左鍵點一下就可以設置斷點了,右擊斷點可以設置成條件斷點

step over和step into

resume

watch窗口,按綠色的加號可以添加變量,按紅色的減號可以把已添加的變量刪掉,在watch窗口可以看到變量目前的值


程序代碼里也能看到變量值

教材學習中的問題和解決過程

因為我是用WINDOWS+IDEA,所以實驗一博客很多部分我都不能直接套用,代碼調試需要的各個按鈕都要要自己摸索,把鼠標移上去,等提示信息顯示出來,再比較老師的截圖里的內容,才能確定這個按鈕的作用。

設條件斷點的時候把i==3和i=3搞錯了

代碼調試中的問題和解決過程

我是20號,20mod5+1=1,做的是凱撒密碼的實現。

1.一開始我以為應該有個scanner.nextChar的方法,然而,其實並沒有。后來百度了一下,找到了toCharArray(),toCharArray()可以把字符串轉化成字符數組。

Scanner scanner = new Scanner(System.in);
        char[] m = new char[100];
        char[] c = new char[100];
        System.out.println("請輸入明文:");   //輸入明文
        String str=scanner.nextLine();
        char[] chars=str.toCharArray();
        for (int i=0;i<chars.length;i++){
            m[i]=chars[i];
        }

因為一開始定義好了明文和密文的字符串,以為有個nextChar,所以這樣寫了,后來才想到可以直接把轉出來的字符數組定成m就好

2.加密的部分我開始是這樣寫的

for (int i=0;i<100;i++){    //加密
            if ((m[i]>='a'&&m[i]<='w')||(m[i]>='A'&&m[i]<='W')) {
                c[i] = (char) (m[i] + 3);
            }
            else if ((m[i]>='x'&&m[i]<='z')||(m[i]>='X'&&m[i]<='Z')){
                c[i] = (char) (m[i] + 3-26);
            }
            else {
                c[i]=m[i];
            }
        }

后來發現程序不能運行,調試之后發現,如果明文小於100,后面都是Null,不可能再+3,所以出錯了

3.后來我想嘗試讓可以自己輸入密鑰

System.out.println("請輸入密鑰:");   //取得密鑰
int key = scanner.nextInt()%26;
        
System.out.println("請輸入明文:");   //取得明文
String str=scanner.nextLine();

發現輸入密鑰之后程序直接走完了,瞬間有種似曾相識的感覺,於是我試了下在中間加行scanner.nextLine();,果然成功了。

最終程序和截圖

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        char[] c = new char[100];
        System.out.println("請輸入密鑰:");   //取得密鑰
        int key = scanner.nextInt()%26;
        scanner.nextLine();
        System.out.println("請輸入明文:");   //取得明文
        String str=scanner.nextLine();
        char[] m=str.toCharArray();

        if (m.length>=100){
            System.out.println("輸入過長,請控制在100英文字符以內");
        }

        for (int i=0;i<m.length;i++){    //加密
            if ((m[i]>='a'&& m[i]<='z')||(m[i]>='A'&& m[i]<='Z')) {
                c[i] = (char) (m[i]+key);
                if (key>0){
                    if ((c[i]<'a'&& c[i]>'Z')||c[i]>'z'){
                        c[i] -= 26;
                    }
                }
                else{
                    if ((c[i]<'a'&& c[i]>'Z')||c[i]<'A'){
                        c[i] += 26;
                    }
                }
            }
            else {
                c[i]=m[i];
            }
        }

        System.out.println("密文:");      //輸出密文
        for (int i=0;i<m.length;i++) {
            System.out.printf("%c",c[i]);
        }
    }
}

實驗心得與體會

這次實驗本身的算法不是很難,但是感覺編程中考驗到我的地方還是不少,例如我一直以為是有一個scanner.nextChar(),老實說我到現在都不懂為什么不弄個nextChar出來。這次實驗讓我實踐到了之前學到的很多知識,例如變量的定義,“.length”的使用,“Scanner”的使用等等,也學會了很多新知識,包括關於Scanner的一些特點,如何用IDEA調試代碼等等,獲益良多。

參考資料


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM