-------------------------数组的定义-------------------------------------
(1)数组的四要素:类型,下标,标识符,元素
(2)静态数组的长度是固定的,下标从0开始
(3)定义:类型 [] 名字=new 类型[长度];
(4)取长度:名字.lenght;lenght 是属性,如果加上lenght()方法。
(5)取元素:名字[下标]
(6)数组一旦被定义都会有默认值:
String--->null
int --->0
double-->0.0
boolean-->false
--------------------------排序方法---------------------------------------------------------
冒泡排序法:
取相邻的两个数字依次比较,在N-1轮后,会把最大或者最小的数字冒到最上面。
(1)外循环n-1
(2)内循环n-1-i
(3)比较n[j] n[j-1]
比较交换法:
从第一个数字开始依次和后面的所有数据比较,在N-1轮后,会按照索引位置依次排序。
(1)外循环n-1
(2)内循环j=i+1 到n;
---------------------------------练习题1----------------------------------------------------------------
//练习1:录入五种水果的价格和名称,根据价格降序输出对应的名称。
public class Demo6 {
public static void main(String[] args) {
double [] cj=new double[5];
String [] names=new String [5];
Scanner scanner=new Scanner(System.in);
for (int i = 0; i < cj.length; i++) {
System.out.println("请输入第"+(i+1)+"水果的价格");
cj[i]=scanner.nextDouble();
System.out.println("请输入第"+(i+1)+"水果的名字");
names[i]=scanner.next();
}
System.out.println("-----排序前的价格-------");
for (int i = 0; i < cj.length; i++) {
System.out.println(cj[i]);
}
//冒泡排序法
for (int i = 0; i < cj.length-1; i++) {
for (int j = 0; j < cj.length-i-1; j++) {
//相邻的两个数据是cj[j] cj[j+1]
double cc=0;
String temp="";
if(cj[j]<cj[j+1])
{
cc=cj[j];
cj[j]=cj[j+1];
cj[j+1]=cc;
//交换数组中的名字
temp=names[j];
names[j]=names[j+1];
names[j+1]=temp;
}
}
}
System.out.println("------排序后----------");
for (int i = 0; i < cj.length; i++) {
System.out.println(names[i]+"水果的价格是:"+cj[i]);
}
}
}
-------------------------------练习2--------------------------------------------------------
/***
* 端午节进行赛龙舟比赛,长度为1000米,随机产生100名选手的速度(1-100)秒/米。
按照时间降序输出比赛结果
* @author Administrator
*
*/
public class Demo8 {
public static void main(String[] args) {
double [] seed=new double[100];
for (int i = 0; i < seed.length; i++) {
//[0,0.99999]
int number=(int)(Math.random()*100+1);
seed[i]=number;
}
//排序
for (int i = 0; i < seed.length-1; i++) {
for (int j = 0; j < seed.length-i-1; j++) {
double cc=0;
if(seed[j]<seed[j+1])
{
cc=seed[j];
seed[j]=seed[j+1];
seed[j+1]=cc;
}
}
}
for (int i = 0; i < seed.length; i++) {
System.out.println("时间:"+1000/seed[i]);
}
}
}
----------------------------------------练习题3-----------------------------------------------
//练习1:循环录入1-5任意的数字,0的时候退出,统计1-5的数字各有多少个?
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
//定义一个数组 a ,b,c,d 的个数
int [] number={0,0,0,0};
//String [] dd={"a","b","c","d"};
int ifexit=1;
do {
System.out.println("请输入a,b,c,d or n退出 ");
String result=scanner.next();
if(result.equals("a"))
{
number[0]++;
}else if(result.equals("b"))
{
number[1]++;
}
else if(result.equals("c"))
{
number[2]++;
}
else if(result.equals("d"))
{
number[3]++;
}
else if(result.endsWith("n")) {
ifexit=0;
}
else {
System.out.println("输入错误!!!!");
}
} while (ifexit==1);
/*for (int i = 0; i < dd.length; i++) {
System.out.println(dd[i]+":"+number[i]);
}*/
/* char a='a';
System.out.println((int)a);
int b=97;
System.out.println((char)b);
*/
//
//i 0- 3
for (int i = 0; i < number.length; i++) {
int b=i+97;
//97-100
System.out.println((char)b+"它的个数"+number[i]);
}
}
-------------------------------练习4---------------------------------------------
/***
* 取数组最大值或最小值
* @author Administrator
*
*/
public class Demo3 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
String names[]=new String[5];
double prices[]=new double[5];
double max=0;
int index=0;
for (int i = 0; i < prices.length; i++) {
System.out.println("输入价格:");
prices[i]=scanner.nextDouble();
System.out.println("输入名字:");
names[i]=scanner.next();
if(i==0)
{
max=prices[i];
}
else
{
if(prices[i]>max)
{
max=prices[i];
//价格最大的下标
index=i;
}
}
}
System.out.println(names[index]+":"+max);
System.out.println("======================");
for (int i = 0; i < prices.length; i++) {
System.out.println(names[i]+":"+prices[i]);
}
}
}
--------------------------------二位数组--------------------------------------------------
思考:如何使用数组存储3个班级5名学生的成绩??
定义: 类型 [][]变量 =new int [数值][],二位数组必须有行,列可以没有,但是取这列上的数据时会报错。
类型 [][] a={{1,2,3,4},{1,2}} a[1][3] 无法赋值也无法取值。
二维数组的长度是行的长度。
二位数组的下标从0开始。