IT兄弟连 Java语法教程 数组 经典案例

  • 2019 年 10 月 5 日
  • 笔记

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/ITXDL123/article/details/97984455

案例需求:

编程实现双色球中奖号码的生成

1)应用知识:

● 数组的声明

● 数组的使用

● for循环

2)需求解析:

在该程序中,需要定义一个长度为7的数组,用来存储中奖号码,使用Random对象获取1~33以内的随机数最为中奖号码,使用for循环循环6次产生6个普通的中奖号码存入数组中,最后使用Random对象随机生成一个1~16以内的中奖号码,需要注意,已经产生的中奖号码不能再次作为中奖号码,所以需要使用if分支结构控制。

3)需求实现:

import java.util.Random

public class ColorBall{

public static void main(String[] args){

//声明一个数组用来存放中奖号码

int[] arr = new int[7];

//声明随机数对象

Random rand = new Random();

//使用for循环生成中奖号码

for(int i = 0; i<6; i++){

//获取一个随机数,表示中奖号码

arr[i] = random.nextInt(33)+1;

for(int j = i-1; j>=0; j–){

//如果生成的随机数已经存在,则重新生成一个随机数

if(arr[i] == arr[j]){

i–;

break;

}

}

}

//生成最后的特殊中奖号码

arr[6] = rand.nextInt(16)+1;

//遍历并输出所有中奖号码

for(int num : arr){

System.out.println(arr[i] + " ");

}

System.out.println();

}

}

案例需求:

编程实现任意正整数中重复数字出现的次数的统计

1)应用知识:

● 数组的声明

● 数组的使用

● while循环

● for循环

● 算术运算符

2)需求解析:

程序开始运行,提示用户输入一个正整数并使用Scanner对象接收,准备一个长度为10的数组,数组的下标对应了正整数中可能出现的数字,0~9。然后通过算符运算符将该正整数的每个位中的数值提取出来,如果用户输入的正整数中存在1时,则将数组中下标为1的位置上的数值加1,以此类推。最后遍历输出该数组中的元素,就可以实现任意正整数中重复数组出现次数的统计。

3)需求实现:

import java.util.Scanner;

public class NumCount{

public static void main(String[] args){

//提示用户输入一个正整数并使用变量记录

System.out.println("请输入一个正整数");

Scanner scan = new Scanner(System.in);

int num = scan.nextInt();

//准备一个长度为10的类型为int的一维数组

int[] arr = new int[10];

//拆分正整数中的每个数字并统计到一维数组中

while(num > 0){

arr[num%10]++;

num /= 10;

}

//打印最终的统计结果

for(int i = 0; i<arr.length; i++){

if(arr[i] > 0){

System.out.println(i + "出现了" + arr[i] + "次!");

}

}

}

}

案例需求:

编程实现使用冒泡排序堆数组中的元素从小到大排序

1)应用知识:

● for循环

● 数组的声明

● 冒泡排序

2)需求解析:

冒泡排序的思想是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复第一趟步骤,直至全部排序完成。

第一趟比较完成后,最后一个数一定是数组中最大的一个数,所以第二趟比较的时候最后一个数不参与比较;

第二趟比较完成后,倒数第二个数也一定是数组中第二大的数,所以第三趟比较的时候最后两个数不参与比较;

依次类推,每一趟比较次数-1;

3)需求实现:

public class BubbleSort{

public static void main(String[] args){

int[] arr = {6,5,7,4,8,3,9,2,0,1};

for(int i = 0; i<arr.length; i++){

for(int j = 0; j<arr.length-i-1;j++){

if(arr[j] > arr[j+1]){

int temp = arr[j];

arr[j] = arr[j+1];

arr[j+1] = temp;

}

}

}

for(int num : arr){

System.out.println(num + ",");

}

}

}

案例需求:

编程实现数组元素反转

1)应用知识:

● 数组的声明

● 数组的使用

● for循环

2)需求解析:

实现数组元素的反转,就是将数组中的元素前后位置调换,第一个元素和最后一个元素调换位置,第二个元素和倒数第二个元素调换位置,依次类推,如果数组的长度是奇数,那么中间位置的数组元素就不需要调换位置。使用for循环循环数组长度的一半即可完成。

3)需求实现:

public class ArrReverse{

public static void main(String[] args){

int[] arr = {1,2,3,4};

for(int i = 0;i<arr.length/2;i++){

int temp = arr[i];

arr[i] = arr[arr.length-i-1];

arr[arr.length-i-1] = temp;

}

for(int num : arr){

System.out.println(num + ",");

}

}

}

案例需求:

编程实现将两个数组合并为一个数组

1)应用技术:

● 数组的声明

● 数组的使用

● for循环

● if分支结构

2)需求分析:

将两个数组合并成一个数组,那么这个新的数组的长度一定等于这两个数组长度之和,定义出这个新的数组,然后使用for循环依次将两个数组中的元素放入新数组即可。

3)需求实现:

public class ArrCombine{

public static void main(String[] args){

int[] arr1 = {1,2,3,4};

int[] arr2 = {5,6,7,8};

int[] arr3 = new int[arr1.length+arr2.length];

for(int i = 0;i<arr3.length;i++){

if(i<arr1.length){

arr3[i] = arr1[i];

}

if(i>=arr2.length){

arr3[i] = arr2[i-arr1.length];

}

}

for(int num : arr3){

System.out.println(num + ",");

}

}

}