20165330 實驗一 Java開發環境的熟悉

1、實驗內容及步驟

  1. 使用JDK編譯、運行簡單的Java程序
    • 使用命令 cd 20165330 進入到學號目錄下
    • mkdir exp1新建文件夾
    • mkdir bin src創建bin src目錄
    • vim src/Hello.java在src目錄下編寫程序
    • javac -g -d bin src/Hello.java編譯到bin目錄
    • java -cp bin ljp.Hello運行帶包的程序

實驗截圖以下:
imagejava

  1. 使用IDEA編輯、編譯、運行、調試Java程序
    • 打開IDEA建立HelloJDB工程,並新建HelloJDB的class文件
    • 編寫代碼
    • 運行程序點擊Run
    • 設置斷點:在所想設的行處點擊左鍵
    • 點擊debug開始調試
    • 點擊step into(F7)或step over(F8)進行單步運行
    • 可在斷點處右鍵設置條件,後單擊Resume圖標,可直接運行到斷點處

實驗截圖以下:
image
imagevim

2、練習

題目:4. 實現學生成績管理功能(增刪改,排序,查找),並進行測試(正常狀況,異常狀況,邊界狀況)。框架

  1. 要求:經過命令行和IDEA兩種方式實現
  2. 設計思路:首先要有多個類的運用,分別進行功能操做、信息存放和功能實現的計算方法。
  • 主類爲功能操做頁面,顯示各項功能操做
class Menu
{
    public static void paint()
    {
        clrscr();
        for (int i = 0; i < 80; i++)
        {
            System.out.print('=');
        }
        System.out.println();

        System.out.println("                             學生成績管理系統                 ");
        System.out.println();
        System.out.println("               1 輸入記錄                       2 輸出全部記錄");
        System.out.println("               3 按平均成績排序並輸出           4 查找記錄");
        System.out.println("               5 統計各分數段人數               6 刪除記錄");
        System.out.println("               0 退出");

        for (int i = 0; i < 80; i++)
        {
            System.out.print('=');
        }
        System.out.println("                                            ");
        System.out.println();
        System.out.print("請輸入命令:");
    }
  • 而後實現信息存放,在這裏我共輸入了三門科目的成績:Java、數學、英語
public Student(int number, String name, int java, int math, int english)
    {
        this.number = number;
        this.name = name;
        this.english = english;
        this.math = math;
        this.java = java;
        total = english + math + java;
        average = total/3;
    }

    public int getNumber()
    {
        return number;
    }

    public String getName()
    {
        return name;
    }

    public int getEnglish()
    {
        return english;
    }

    public int getMath()
    {
        return math;
    }

    public int getJava()
    {
        return java;
    }

    public int getAverage()
    {
        return average;
    }

    public int getTotal()
    {
        return total;
    }
}
  • 最後開始功能實現的運算方法(包括爲增長、排序、查找、刪除、總分、平均分、統計分數段)
class StudentSet
{
    private static final int maxLen = 1000;
    private static int len = 0;
    private static Student[] data = new Student[maxLen];

    public static int getMaxLen()
    {
        return maxLen;
    }

    public static int getLen()
    {
        return len;
    }

    public static Student getData(int index)
    {
        return data[index];
    }

    public static int addData(Student newData)
    {
        if (len < maxLen)
        {
            data[len] = newData;
            len++;
            return 0;
        } else
        {
            return -1;
        }
    }

    public static void sortData()
    {
        for (int i = 0; i < len -1; i++)
        {
            int minIndex = i;
            for (int j = i+1; j < len; j++)
            {
                if (data[minIndex].getAverage() > data[j].getAverage())
                {
                    minIndex = j;
                }
            }
            if (minIndex != i)
            {
                Student temp = data[i];
                data[i] = data[minIndex];
                data[minIndex] = temp;
            }
        }
    }

    public static int search(int number)
    {
        for(int i = 0; i < len; i++)
        {
            if (data[i].getNumber() == number)
            {
                return i;
            }
        }
        return -1;
    }

    public static int delete(int number)
    {
        for (int i = 0; i < len; i++)
        {
            if (data[i].getNumber() == number)
            {
                for (int j = i + 1; j < len; j++)
                {
                    data[j-1] = data[j];
                }
                len--;
                return 0;
            }
        }
        return -1;
    }

    public static int stat(int min, int max)
    {
        int sum =0;

        for (int i = 0; i < len; i++)
        {
            if ((data[i].getAverage() >= min) && (data[i].getAverage() <= max))
            {
                sum++;
            }
        }
        return sum;
    }
}
  • 運行結果截圖:
    image測試

  • 遇到的問題和解決過程this

在運行時,出現
image命令行

解決方法:翻看前面的代碼,發現前面輸入java成績部分的java輸入錯誤,致使與錯誤行中的java不對應,致使找不到該變量。debug

3、實驗體會與總結

  • 在本次實驗中,前兩個實驗都是基本的操做,很快就可下手作,也是我更掌握了運行java的基本步驟,還有特別注意的帶包的程序運行的不一樣之處。
  • 第三個實驗對我來講有很大難度,以前C語言也遇到過相似的問題,大概的框架本身是很快能夠想出來的,在往其中填補代碼的過程就顯得吃力,翻看了不少書上的內容,也詢問好多人,日常的敲代碼這一項任務仍是要多上心,代碼的框架結構、語句使用本身有時也要仔細推敲一下。
步驟 耗時 百分比
需求分析 5min 4%
設計 20min 20%
代碼實現 60min 57%
測試 15min 15%
分析總結 5min 4%
相關文章
相關標籤/搜索