Java编程那些事儿45—数组使用示例1
出自:http://blog.csdn.net/mailbomb
6.3 数组使用示例
本部分通过一系列的示例,熟悉数组的基本语法,并演示一些使用数组可以解决的基本问题。在实际使用数组时,数组的长度以及数组中每个元素存储的数据,都根据逻辑需要进行设计。
6.3.1 循环初始化数组元素
要求:初始化一个长度为100的int数组,数组中的元素依次为1-100。
这是一个基本的使用,主要是熟悉数组的语法,在实际编写时,需要发现数组下标和数组元素值之间的规律即可。
第一种思路:循环数组的下标0-99,则和下标对应的元素的值比数组下标多1。
则实现代码如下:
int[] m = new int[100];
for(int i = 0; i < m.length; i++){
m[i] = i + 1;
}
代码说明:声明并初始化一个长度是100的数组,使用循环循环数组的下标,下标的区间是[0,m.length-1],其中m.length表示数组的长度。在实际赋值时,把数组的下标做成变量,则当i的值为0时,则m[i]就是m[0],依次类推,按照题目的要求,则数值的规律是i+1,这样循环结束以后,数组m中的值就依次是1-100了。
第二种思路:循环数组的值1-100,则下标比数组的值下1。
则实现的代码如下:
int[] m = new int[100];
for(int i = 1; i <= 100; i++){
m[i – 1] = i;
}
该代码中循环变量i的值从1循环到100,则数组的下标是i – 1,这样也可以实现题目要求的功能。
6.3.2输出数列
要求:输出1 1 2 3 5 8 13……这样的数列,输出该数列的前20个数字。
该题是一个基本的数字逻辑,在实际解决该问题时,首先要发现该数字的规律,然后按照该规律来设计数组即可。
实现思路:数字的规律是除了数列里的前两个数字以外,其它的数字都满足该数字等于前两个数字的和,由于题目要求输出前20个数字,所以需要一个长度为20的数组,第一个和第二个数字直接赋值,后续的数字通过前两个数字元素得到。
则实现的代码如下:
int[] num = new int[20];
num[0] = 1;
num[1] = 1;
//循环初始化
for(int i = 2; i < num.length; i++){
num[i] = num[i – 1] + num[i – 2];
}
//循环输出
for(int i = 0; i < num.length; i++){
System.out.print(num[i]);
System.out.print(‘ ‘);
}
System.out.println(); //换行
在该代码中,初始化一个长度为20的数组,首先将数组中的前两个元素赋值成1,然后循环对后续的元素的赋值,如果当前元素的下标是i,则它前一个元素的下标是i-1,再前面一个元素的下标是i-2,只需要将这2个元素的值相加,然后赋值给当前元素即可。后面使用一个循环,输出数组中所有的元素,元素和元素之间有一个间隔的空格,在输出所有的元素以后换行。
6.3.3 歌手打分
要求:在歌唱比赛中,共有10位评委进行打分,在计算歌手得分时,去掉一个最高分,去掉一个最低分,然后剩余的8位评委的分数进行平均,就是该选手的最终得分。如果已知每个评委的评分,求该选手的得分。
该题实际上涉及到求数组的最大值、最小值,以及求数组中所有元素的和,也是数组方便统计的用途体现。
实现思路:求出数组元素的最大值、最小值以及和,然后使用和减去最大值和最小值,然后除以8获得得分。
则实现的代码如下:
int[] score = {90,78,90,96,67,86,78,92,79,85}; //评委打分
int sum = 0; //存储和
int max =score[0]; //存储最大值
int min = score[0]; //存储最小值
//求和
for(int i = 0; i < score.length; i++){
sum += score[i];
}
//获得最大值
for(int i = 1; i < score.length; i++){
//比较
if(max < score[i]){ max = score[i];
}
}
//获得最小值
for(int i = 1; i < score.length; i++){
//比较
if(min > score[i]){ min = score[i];
}
}
//计算平均分
double avg = (sum – max – min)/8.0;
System.out.println(avg);
在该代码中,实现数组求和的思路和以前的一样,就是每次加一个元素,然后用得到的结果再和后续的元素依次相加。求最大值的思路是首先假设第一个元素最大,把score[0]赋值给max,然后使用max的值和后续依次比较,如果后续的元素比max大,则把该值赋值给max,然后再和后续的元素比较,求最小值的思路和最大值的思路一样。然后计算平均分就完成了题目的要求。
该代码虽然结构比较清晰,但是效率不高,为了追求效率,可以把以上三个循环合并起来,代码如下:
for(int i = 0; i < score.length; i++){
sum += score[i]; //求和
//获得最大值
if(max < score[i]){ max = score[i];
}
//获得最小值
if(min > score[i]){ min = score[i];
}
}
这样虽然在结构上稍微复杂了一些,但是效率得到了改善。在实际编写程序时,一般会在功能书写完成以后,对代码进行优化,提高程序的执行效率。
分享到:
相关推荐
1) 数组变量的声明 int[] ary; 声明了数组变量 ary, 数组变量是代词, int ary[]; 为了与C语法兼容的写法, 不建议写法, 2) 数组对象动态初始化 ary = new int[4]; //数组变量引用了具体数组对象, 就是代词 ...
"C语言数组学习教案" 本节课件主要讲解C语言中的数组知识点,包括数组的定义、引用、初始化等基本概念和操作。 一、数组的定义 在C语言中,数组是一种构造数据类型,由基本数据类型通过一定的规则组合而成。定义...
本篇文章将聚焦于“php数组学习之一”,深入探讨PHP数组的基础概念、类型、创建方式以及一些常用的数组操作函数。 首先,PHP中的数组分为索引数组和关联数组两种类型。索引数组是由数字索引(默认从0开始)组成的...
在C#中,数组的索引是从0开始的,这意味着一个包含n个元素的数组的索引范围是0到n-1。 在C#中声明数组时,需要将方括号`[]`放在类型后面,而不是标识符后面。例如,正确的方式是`int[] table`,而不是`int table[]`...
VB数组学习教案.pptx
VBA 数组学习笔记 VBA 数组学习笔记是指在 Visual Basic for Applications(VBA)中对数组的学习和应用。数组是 VBA 编程中非常重要的一部分,它可以用来存储和处理大量的数据。 数组的声明 在 VBA 中,数组的...
C++数组的学习笔记(入门) C++数组是一种重要的数据结构,数组是相同类型元素的集合。在C++中,数组可以分为一维数组、二维数组和字符数组等。本文将对C++数组的定义、初始化和引用进行详细的介绍。 一维数组 一...
c++数组学习资料
本学习内容主要聚焦于“数组参数”,让我们深入探讨这个主题。 数组参数允许我们将整个数组作为单一参数传递给函数。这在处理大量数据时非常有用,因为它减少了函数调用的次数,提高了程序效率。在大多数编程语言中...
今天学习了数组,可以说是PHP的数据应用中较重要的一种方式。PHP的数组函数众多,下面是我学习的小结,借此记之,便于以后鉴之…… 一、数组定义: 数组的定义使用 array()方式定义,可以定义空数组: 复制代码 ...
本主题聚焦于“易语言动画框数组学习”,这是一段用于理解与操作动画框数组的源代码。 动画框在易语言中是一个重要的图形用户界面(GUI)元素,它可以显示动态图像或动画效果,通常用于增强程序的视觉表现力。动画...
C语言教学之数组学习教案.pptx
C语言二维数组学习教案.pptx
本资源“动画框数组学习.rar”显然是一个压缩包,包含了一个易语言(EasyLanguage)的源代码示例,用于教授如何使用动画框数组进行编程。易语言是一款面向初学者的中文编程软件,它的语法简洁明了,适合初学者学习...
### VBA数组学习笔记 #### 一、数组的声明与初始化 在VBA中,数组是一种非常重要的数据结构,用于存储一系列同类型的值。数组的声明与其他变量类似,可以通过`Dim`、`Static`、`Private`或`Public`语句进行。与...
这个“动态数组学习C++的经典例子”很可能是包含了一些演示如何使用C++管理动态数组的代码示例。 动态数组主要通过C++中的指针和内存管理函数来实现。在C++中,我们通常使用`new`操作符来动态分配内存,创建一个可...
【JAVA数组学习教程】 在Java编程中,数组是一种基础且重要的数据结构,它允许程序员存储一组具有相同类型的元素。数组的使用是程序设计中的常见环节,尤其对于初学者来说,理解数组的概念和操作至关重要。 首先,...
c语言数组学习
在本实验中,我们将学习如何使用条件转移指令、串操作指令和循环指令来编写一个将一个包含20个元素的数组STRING分成一个偶数数组STRING1和一个奇数数组STRING2的程序。 二、实验要求 1. 掌握条件转移指令的使用...