ubuntu16.04下配置JDK 1.8+安裝Java EE,並實現最大子數組算法


軟工第二次作業:

1、在個人電腦中安裝一個集成開發環境(Microsoft Visual Studio、Eclipse或其它工具均可),要求該環境能夠提供單元自動測試功能;

2、記錄安裝過程,並將全部內容發表在博客中;

3、實現最大子數組和算法,並將該段代碼上傳至Coding.net系統中;

4、自行選擇合適的覆蓋標准並設計測試用例對該段代碼進行測試,並將測試結果發布在博客中,結果以如下表格形式完成。


本文為干貨,希望有用,歡迎評論。


      由於我的labtop上安裝的是ubuntu16.04系統,其上不支持VS,固決定安裝Eclipse以便日后開發。下面介紹ubuntu16.04系統下安裝Eclipse的具體步驟:

  • 下載jdk:jdk-8u101-linux-x64.tar.gz
  • 下載Eclipse:eclipse-jee-luna-SR2-linux-gtk-x86_64.tar.gz(下載資源可移步官網)
  • 將jdk解壓到/usr/local文件夾中。雙擊壓縮文件解壓到/home目錄下,后將文件通過終端命令轉移到/usr/local目錄下:mkdir /usr/local———創建一個新文件夾

(另外可以直接用終端命令sudo tar zxvf jdk-8u101-linux-x64.tar.gz -C /usr/local達到上述目的。需要注意的是網上下載的壓縮文件默認保存在/home/download下,如果直接用上述命令從這一目錄解壓文件到目標目錄下,就會提示找不到這一文件,我試着先把文件解壓到/home下,再通過root權限移動文件,結果就成功了,至於原因還請知道的大神不吝賜教~)

  • 配置jdk環境變量。命令:sudo vim /etc/profile———使用vim打開文件,並在文件尾添加如下語句:
JAVA_HOME=/opt/jvm/jdk1.8.0_77

export JRE_HOME=${JAVA_HOME}/jre

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

export PATH=${JAVA_HOME}/bin:$PATH

        查看是否安裝成功:java -version,若顯示如下,則說明安裝成功。

  • 安裝Eclipse。將其用同樣的方法解壓到/usr/local文件夾中。
  • 創建Eclipse桌面快捷方式。在中端輸入:sudo gedit /usr/share/applications/eclipse.desktop——彈出文本編輯器,忽略終端警告,在文本編輯器中輸入:
[Desktop Entry]

Type=Application

Name=Eclipse

Comment=Eclipse Integrated Development Environment

Icon=/usr/lib/eclipse/icon.xpm

Exec=/usr/lib/eclipse/eclipse

Terminal=false

          保存並退出,安裝完成。

  • 之后在文件夾中找到eclipse圖標,雙擊即可打開。

(補充:在這里安利一款linux下功能強大的截圖軟件ksnapshot。在命令行輸入:sudo apt-get install ksnapshot,等待安裝完成之后就可以自由自在的截屏了~)

        另外,百度了一下什么叫“單元自動測試”,這里介紹的挺詳細的:http://www.infoq.com/cn/articles/road-of-automated-unit-testing-practices/,但我還是一頭霧水,有興趣的朋友可以看一下。

 

最大子數組和算法實現以及單元測試

 代碼實現代碼:

    package test;
    import java.util.*;
    public class MaxSubArraySum {
        public static void main(String []args) {  
            int len, res;
            Scanner scan = new Scanner(System.in);
            len = scan.nextInt();
            int []a = new int [len];
            for(int i = 0; i < len; i++)
                a[i] = scan.nextInt();
            res = Method(a, len);
            System.out.println("該數組的最大子數組和為:" + res);   
        }  
          
        static int Method(int []a, int len) {
            int i;
            int MaxSum = 0;
            int CurSum = 0;
            for(i = 0; i < len; i++){
                CurSum += a[i];
                if(CurSum > MaxSum)
                    MaxSum = CurSum;
                if(CurSum < 0)
                    CurSum = 0;
            }
            return MaxSum;
        }
    }

單元測試代碼:

package test;

import static org.junit.Assert.*;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class MaxSubArraySumTest {

    @Before
    public void setUp() throws Exception {
    }

    @After
    public void tearDown() throws Exception {
    }

    @Test
    public void testMethod1() {
        int len = 5;
        int []a = {1,2,3,4,1};
        System.out.println("該數組的最大子數組和為:" + MaxSubArraySum.Method(a, len));
    }
    @Test
    public void testMethod2() {
        int len = 5;
        int []a = {1,2,3,-4,-1};
        System.out.println("該數組的最大子數組和為:" + MaxSubArraySum.Method(a, len));
    }
    @Test
    public void testMethod3() {
        int len = 4;
        int []a = {1 ,4 ,-5, 6};
        System.out.println("該數組的最大子數組和為:" + MaxSubArraySum.Method(a, len));
    }
    @Test
    public void testMethod4() {
        int len = 4;
        int []a = {1, 0, -1, 2, -1, 3};
        System.out.println("該數組的最大子數組和為:" + MaxSubArraySum.Method(a, len));
    }
    
}

運行結果:

代碼托管: https://coding.net/u/Drogheda/p/SchoolWork/git/blob/master/README.md

 

 

 

 

        

 


免責聲明!

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



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