第八章 数组
java中的数组
在java中,数组就是一个变量,用于将相同数据类型的数据存储在内存中。数据中的每一个数据元素都属于同一数据类型。例如,全班30个学员的成绩都是整形,就可以存储在一个整形数组里面。
如何使用数组
步骤
1.声明数组
语法:
数据类型[]数组名;
或者
数据类型 数组名[]
以上两种方法都可以声明一个数组,数组名可以是任意合法的变量名。
声明数组就是告诉计算机该数组中数据的类型是什么。例如:
int[]socres; //存储学员的成绩,类型为int
double height[] //存储学员的身高,类型为double
String[] names; //存储学员的姓名,类型为String
2.分配空间
虽然声明了数组,但并不会为数组元素分配内存空间,此时还不能使用数组。因此要为数组分配内存空间,这样数组的每一个元素才能对应一个存储单元。
简单地说:分配空间就是要告诉计算机在内存中分配一些连续的空间来存储数据。在java中可以使用new关键词来给数组分配空间。
语法
数组名 = new 数据类型[数组长度];
其中,数组长度就是数组中能存放的元素个数,显然应该为大于0的整形。例如:
scores = new int[30]; //长度为30的int类型数组;、
scores = new double[30]; //长度为30的double类型数组
scores = new String[30]; //长度为30的String类型数组
可以将上面两个步骤合并,即在声明数组的同时就给它分配空间,语法如下。
语法
数据类型[]数组名 = new 数据类型[数组长度];
例如:
int scores[] = new[30]; //存储30个学员成绩
3.赋值
分配空间后就可以向数组里放数据了。数组中的每一个元素都是通过下标来访问的,语法如下。
语法
数组名[下标值];
例如,向scores数组中存放数据。
scores[0] =89;
scores[1]=60;
scores[2]=70;
语法
数据类型[] 数组名={值1,值2,值3,…值n);
例如,使用这种方式来创建scores数组。
int[]scores =[60,70,98,90,76]; //创建一个长度为5的数组scores
同时,它也等价下面的代码:
int[]scores = new int[]{60,70,98,90,76};
示例代码:
import java.util.Scanner;
public class Arraydemo{
public static void main(String[]args){
int[]scores = new int[5]; //成绩数组
int sum =0; //成绩总和
Scanner input = new Scanner(System.in);
System.out.println("请输入5位学员的成绩")
for(int i=0;i<scores.length;i++){
socres[i]=input.nextInt();
sum =sum+scores[i]; //成绩累加
}
}
system.out.println("学员的平均分是:"+(double)sum/scores。length);
数组排序
数组排序是实际开发中比较常用的操作,如果需要对存放在数组中的五位学员的考试成绩从低到高排序,应如何实现呢?其实在java中这个问题很容易解决。先看下面的语法。
语法
Arrays.sort(数组名);
示例代码:
import java.util.Arrays;
import java.util.*;
public class Y2 {
public static void main(String[] args) {
int[]scores=new int[5];
Scanner in=new Scanner(System.in);
System.out.println("请输入五位同学的成绩:");
for(int i=0;i<scores.length;i++) {
scores[i]= in.nextInt();
}
Arrays.sort(scores);
System.out.println("学员成绩按升序排序:");
for(int i=0;i<scores.length;i++){
System.out.println(scores[i]+"");
}
```
}
```
}
第九章 循环结构进阶
什么是二重循环
什么是二重循环呢? 简单地说,二重循环就是一个循环体内又包含另一个完整的循环结构。前面我们学校了3种循环:while循环、do-while循环和for循环。这三种循环之间是可以互相嵌套的。一个循环要完整地包含另一个循环中,如下面四种形式都是合法的。
//while与while循环嵌套
while(循环条件1){
//循环操作1
while(循环条件2){
//循环操作2;
如何使用二重循环
示例代码:
import java.util.*;
public class Y1 {
public static void main(String[] args) {
int[]score=new int[4];
int classNum=3;
double sum=0.0;
double[]average=new double[classNum];
Scanner in=new Scanner(System.in);
for(int i=0;i<classNum;i++) {
sum=0.0;
System.out.println("请输入第"+(i+1)+"个班级的成绩");
for(int j=0;j<score.length;j++) {
System.out.println("第"+(j+1)+"个学员的成绩:");
score[j]=in.nextInt();
sum=sum+score[j];
}
average[i]=sum/score.length;
System.out.println("第"+(i+1)+"个班级参赛学员的平均分是:"+average[i]+"\n");
```
}
}
```
}
在二重循环中使用continue语句
示例代码:
import java.util.*;
public class Y3 {
public static void main(String[] args) {
int[]score=new int[4];
int classnum=3;
double sum=0.0;
double[]average=new double[classnum];
int count=0;
Scanner in= new Scanner(System.in);
for(int i=0;i<classnum;i++) {
sum=0.0;
System.out.println("请输入第"+(i+1)+"个班级的成绩");
for(int j=0;j<score.length;i++) {
System.out.println("第"+(j+1)+"个学员的成绩:");
score[j]=in.nextInt();
sum=sum+score[j];
if(score[j]<85) {
continue;
}
count++;
}
average[i]=sum/score.length;
System.out.println("第"+(i+1)+"个班级参赛学员的平均分是:"+average[i]+"\n");
}
System.out.println("成绩85分以上的学员人数有"+count+"人");
}
}
在二重循环中使用break语句
使用循环和break语句模拟购物结账问题。假设有五家衣服专卖店,每家限购三件衣服。用户可以选择离开,也可以买衣服。最后打印出总共购买了几件衣服。
使用二重循环解决,其中外层循环控制去每个专卖店的过程,内存循环控制买衣服的过程。如果用户选择离开,则进入下一家店,因此购物过程大致如下。
for(int i=0;i<5;i++){ //名次进入一家店
for(int j=0;j<3;j++){ //每家店限购三件衣服
if(离开这家店){
break;
} //选购一件衣服;
}
//结账;
}