最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解java一維數(shù)組及練習(xí)題實(shí)例

 更新時(shí)間:2019年07月18日 16:24:06   投稿:laozhang  
在本篇文章里小編給大家整理了關(guān)于java一維數(shù)組及練習(xí)題的相關(guān)知識(shí)點(diǎn)和實(shí)例代碼,有需要的朋友們跟著學(xué)習(xí)下。

一維數(shù)組

1.一維數(shù)組的定義方式:

int[] array1 = new int[3];//聲明創(chuàng)建一個(gè)包含3個(gè)元素的數(shù)組array1(初始值為0)

int[] array2 = {1, 2, 3};//聲明、創(chuàng)建并初始化一個(gè)包含3個(gè)元素的數(shù)組

int[] array3 = new int[] {1, 2, 3};//聲明、創(chuàng)建并初始化一個(gè)包含3個(gè)元素的整型數(shù)組

int[] array4;
array[4] = {1, 2, 3}//先聲明一個(gè)數(shù)組array,再進(jìn)行創(chuàng)建及初始化

int[] array5 = new int[3];
array5[0] = 1;
array5[1] = 2;
array5[2] = 3;//先聲明、創(chuàng)建一個(gè)具有3個(gè)元素的數(shù)組,再用賦值語句進(jìn)行初始化

2.利用一維數(shù)組輸出斐波那契數(shù)列的前20項(xiàng)

public static void fib(int[] array) {
    array[0] = 1;
    array[1] = 1;
    for (int i = 2; i < array.length; i++) {
      array[i] = array[i - 1] + array[i - 2];
    }
    System.out.println(Arrays.toString(array));
}//記得在主函數(shù)中創(chuàng)建array數(shù)組

題目練習(xí)

1.實(shí)現(xiàn)二分查找算法:有序的數(shù)組

public class TestDemo1 {
  public static int binary(int[] array, int key) {//key為要查找的數(shù)
    Arrays.sort(array);//正序排列數(shù)組
    System.out.println("由從小到大順序排列數(shù)組:" + Arrays.toString(array));
    int left = 0;
    int right = array.length - 1;//將數(shù)組最小下標(biāo)與最大下標(biāo)分別賦值給left和right
    int mid = 0;//將中值初始化
    while (left <= right) {//“=”條件防止當(dāng)輸入的值為數(shù)組最大下標(biāo)指向的數(shù)時(shí),不進(jìn)入循環(huán),而返回-1的情況
      mid = (left + right) / 2;//二分法原理為折半查找,故中間值為左右下標(biāo)之和除以2
      if (key == array[mid]) {//如果第一次中間下標(biāo)指向的值正好等于要查找的值,返回該下標(biāo)
        return mid;
      } else if (key > array[mid]) {//如果如果輸入的值大于中間下標(biāo)指向的值,則將當(dāng)前中值下標(biāo)作為下一次循環(huán)的左下標(biāo)
        left = mid + 1;/*“+1”的含義:防止輸入的值為數(shù)組最大下標(biāo)指向的值,當(dāng)進(jìn)行二分查找最后一步時(shí),因?yàn)閙id為int類型,所以會(huì)導(dǎo)
        致左邊下標(biāo)不在發(fā)生變化,所以要+1;當(dāng)+1時(shí),左邊下標(biāo)變?yōu)樯弦淮沃兄迪聵?biāo)的后一位,不影響此方法的正確性,還可以減少計(jì)算步驟*/
      } else {//只剩下輸入的數(shù)下標(biāo)小于中值下標(biāo)的情況,將當(dāng)前中值下標(biāo)作為下次循環(huán)的右下標(biāo)
        right = mid - 1;//與“+1”含義類似,防止輸入的數(shù)對(duì)應(yīng)的為最右下標(biāo)
      }
    }
    return -1;//在數(shù)組中找不到輸入的數(shù),返回-1
  }
  
  public static void main(String[] args) {
    int[] array = {22, 15, -46, 35, 69, 20};
    System.out.println("請(qǐng)輸入你想查找的數(shù)字:");
    Scanner scanner = new Scanner(System.in);
    int key = scanner.nextInt();
    System.out.println(binary(array, key));
   
  }
}

2.求連續(xù)子數(shù)組的最大和

public class TestDemo1 {
public static void sumArray(int[] array) {
    int sum = array[0];//對(duì)數(shù)組求和的變量
    int max = array[0];//求和最大值的變量
    for (int i = 1; i < array.length; i++) {//從第一項(xiàng)開始循環(huán)
      if (sum + array[i] < array[i]) {//如果前幾項(xiàng)的和與本項(xiàng)之和小于本項(xiàng),則最大連續(xù)子數(shù)組的和肯定不包括前幾項(xiàng)
        sum = array[i];//將本項(xiàng)的值賦給sum,之后的循環(huán)求和從本項(xiàng)依次向后相加
      } else {
        sum = sum + array[i];//如果前幾項(xiàng)的和與本項(xiàng)之和大于本項(xiàng),則繼續(xù)向后執(zhí)行遞加操作
      }
      if (sum >= max) {//每次相加之后與初始的max值相比較,如果和大于max的值,則更新max,最后返回的max值即為最大連續(xù)子數(shù)列的和
        max = sum;
      }
    }
    System.out.println("連續(xù)子數(shù)組最大和為:" + max);
  }
   public static void main(String[] args) {
    int[] array = {1, -2, 3, 10, -4, 7, 2, -5};
    sumArray(array);
      }
}

3.交換兩個(gè)數(shù)

public class TestDemo1 {

	public static void swap(int a,int b) {
		int tmp = 0;
		tmp = a;
		a = b;
		b = tmp;    
}
  
	public static void main(String[] args) {
		int a = 10;
		int b = 20;
		swap(a,b);
		System.out.println(a);
		System.out.println(b);  
  }
}

用上面寫的方法在執(zhí)行交換兩個(gè)數(shù)操作數(shù)會(huì)出現(xiàn)錯(cuò)誤,原因:

在主函數(shù)中swap(a,b)操作實(shí)際是將實(shí)參a,b的地址拷貝到swap方法中,即傳址。在swap方法中進(jìn)行數(shù)值交換操作時(shí)只是交換了該方法中形參的地址,而原本實(shí)參的地址并沒有改變,所以輸出的a,b值沒有發(fā)生改變。

Java中的基本元素不支持傳址,必須是對(duì)象或者數(shù)組才能傳址

可作如下修改

class MyVlue {
  int data;
}
public class TestDemo1 {
  public static void swap(MyVlue myVlue,MyVlue myVlue2) {
    int tmp = myVlue.data;
    myVlue.data = myVlue2.data;
    myVlue2.data = tmp;
  }    
  public static void main(String[] args) {   
    MyVlue myVlue = new MyVlue();
    myVlue.data = 10;
    MyVlue myVlue2 = new MyVlue();
    myVlue2.data = 20;
    swap(myVlue,myVlue2);
    System.out.println(myVlue.data);
    System.out.println(myVlue2.data);    
  }
}
//新建對(duì)象進(jìn)行數(shù)值的交換,交換的是實(shí)參

4.逆置數(shù)組

public class TestDemo1 { 
  public static void invertArray(int[] array) {
    System.out.println("輸出該數(shù)組:" + Arrays.toString(array));
    for (int front = 0, end = array.length - 1; front < end; front++, end--) {//循環(huán)將數(shù)組下標(biāo)由第一項(xiàng)遞增,最后一項(xiàng)遞減,當(dāng)遞增的下標(biāo)超過遞減的下標(biāo)時(shí),結(jié)束循環(huán)
      int temp = array[front];//將數(shù)組的第一個(gè)元素臨時(shí)賦值給變量temp
      array[front] = array[end];//將數(shù)組最后的元素賦值到數(shù)組的第一個(gè)元素
      array[end] = temp;//將temp的值賦給數(shù)組最后的元素,實(shí)現(xiàn)數(shù)組下標(biāo)不變,但元素的值進(jìn)行倒置的操作
    }
    System.out.println("將該數(shù)組倒置后輸出:" + Arrays.toString(array));
  }

  public static void main(String[] args) {
    int[] array = {1, 2, 3, 4, 5};
    invertArray(array);
  }
}

以上就是關(guān)于java一維數(shù)組及練習(xí)題的全部知識(shí)點(diǎn)內(nèi)容,感謝大家的閱讀和對(duì)腳本之家的支持。

相關(guān)文章

  • SpringSecurity 測(cè)試實(shí)戰(zhàn)

    SpringSecurity 測(cè)試實(shí)戰(zhàn)

    這篇文章主要介紹了SpringSecurity 測(cè)試實(shí)戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • jmeter正則表達(dá)式的使用

    jmeter正則表達(dá)式的使用

    在jmeter中,可以利用正則表達(dá)式提取器來幫助我們完成這一動(dòng)作,本文就詳細(xì)的介紹一下應(yīng)該如何使用,感興趣的可以了解一下
    2021-11-11
  • 詳解spring mvc 請(qǐng)求轉(zhuǎn)發(fā)和重定向

    詳解spring mvc 請(qǐng)求轉(zhuǎn)發(fā)和重定向

    這篇文章主要介紹了詳解spring mvc 請(qǐng)求轉(zhuǎn)發(fā)和重定向,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-02-02
  • java開發(fā)flyway的方法

    java開發(fā)flyway的方法

    這篇文章主要介紹了java開發(fā)flyway的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 使用Java實(shí)現(xiàn)構(gòu)建jenkins的多個(gè)job并返回構(gòu)建結(jié)果示例

    使用Java實(shí)現(xiàn)構(gòu)建jenkins的多個(gè)job并返回構(gòu)建結(jié)果示例

    這篇文章主要介紹了使用Java實(shí)現(xiàn)構(gòu)建jenkins的多個(gè)job并返回構(gòu)建結(jié)果示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • SpringMVC五大組件與執(zhí)行原理分析總結(jié)

    SpringMVC五大組件與執(zhí)行原理分析總結(jié)

    這篇文章主要介紹了SpringMVC五大組件與執(zhí)行原理分析總結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-01-01
  • Java計(jì)算字符串公式的方式解讀

    Java計(jì)算字符串公式的方式解讀

    這篇文章主要介紹了Java計(jì)算字符串公式的方式解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 基于Java SWFTools實(shí)現(xiàn)把pdf轉(zhuǎn)成swf

    基于Java SWFTools實(shí)現(xiàn)把pdf轉(zhuǎn)成swf

    這篇文章主要介紹了基于Java SWFTools實(shí)現(xiàn)把pdf轉(zhuǎn)成swf,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • SpringBoot實(shí)現(xiàn)權(quán)限驗(yàn)證的示例步驟

    SpringBoot實(shí)現(xiàn)權(quán)限驗(yàn)證的示例步驟

    權(quán)限驗(yàn)證是一種用于控制對(duì)系統(tǒng)資源和操作的訪問的機(jī)制。它允許開發(fā)人員定義誰可以執(zhí)行特定操作或訪問特定資源,并確保只有經(jīng)過授權(quán)的用戶才能執(zhí)行這些操作,這篇文章主要介紹了SpringBoot實(shí)現(xiàn)權(quán)限驗(yàn)證,需要的朋友可以參考下
    2023-08-08
  • SpringBoot Shiro配置自定義密碼加密器代碼實(shí)例

    SpringBoot Shiro配置自定義密碼加密器代碼實(shí)例

    這篇文章主要介紹了SpringBoot Shiro配置自定義密碼加密器代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03

最新評(píng)論

巴楚县| 陈巴尔虎旗| 镶黄旗| 潍坊市| 汪清县| 蒙阴县| 江口县| 泸定县| 察雅县| 台东县| 家居| 聂拉木县| 皋兰县| 上林县| 合江县| 弥勒县| 尉氏县| 建始县| 吉水县| 临城县| 温宿县| 茂名市| 哈密市| 永德县| 车险| 桐梓县| 彩票| 南华县| 光山县| 元朗区| 突泉县| 洛宁县| 札达县| 哈密市| 望奎县| 阳曲县| 麟游县| 霍林郭勒市| 都匀市| 古交市| 日照市|