5.1初识数组
目标:输入一串数字,计算其平均数,输出大于平均数的数字
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int x=0;
int cnt=0;
double sum = 0;
int[] number = new int[100];//定义数组
x = in.nextInt();
while( x!= -1)
{
number[cnt] = x;
sum = sum+x;
cnt++;
x = in.nextInt();
}
if( cnt>0 )
{
double average = sum/cnt;//计算平均数
for( int i=0;i<cnt ;i++)
{
if( number[i]>average)
{
System.out.println(number[i]);//大于平均数的数字输出
}
}
System.out.println(sum/cnt);//平均数
}
in.close();
}
5.2创建数组
5.3数组的元素
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int cnt;
cnt=in.nextInt();//输入几个数字
double sum = 0;
if( cnt>0 )
{
int[] number = new int[cnt];//定义数组,cnt为变量,不用担心下标溢出
for( int i=0; i<cnt ; i++)
{
number[i] = in.nextInt();
sum = sum+number[i];
}
double average = sum/cnt;
for( int i=0 ; i<cnt ;i++)
{
if( number[i]>average)
{
System.out.println(number[i]);//大于平均数的数字输出
}
}
System.out.println(sum/cnt);//平均数
}
in.close();
}
5.4数组变量
- 将a1的地址赋给a2(即a1,a2共同管理a1所管理的数组)
- 第一个循环中,a2的数组中每个数都加1(a1的数组中每个数都加1)
- 输出结果:2 3 4 5(a1,a2都是)
复制数组
- 采用遍历的方法
5.5投票统计
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int x;
int [] number = new int[10];//10个数组用来记录0-9这十个数出现的次数。
//定义数组时没有赋初值,那么默认初值为0
x = in.nextInt();
while(x!=-1)
{
if( x>=0 && x<=9 )
{
number[x] ++;
}
x = in.nextInt();
}
for(int i=0 ; i<number.length ; i++)
{
System.out.println(i+"出现了"+":"+number[i]+"次");
}
in.close();
}
5.6遍历数组
目标:输入一个数字,看数组中哪个数与其相等。
for–each循环
对于数组date中的每一个元素,循环的每一轮将其拿出作为一个k。
1:k=date【0】
2;k=date【1】
…
5.7素数
- 改进:去掉偶数,从3到x-1开始判断
- 改进:去掉偶数,从3到sqrt(x)
- 改进:构造素数表
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int[]primes = new int[50];
primes[0] = 2;
int cnt = 1;
MAIN_LOOP://命名
for(int x=3; cnt<primes.length ;x++)//50位的素数表
{
for(int i=0; i<cnt; i++)//遍历50个已经找到的素数
{
if( x % primes[i]==0)//能整除,不是素数
{
continue MAIN_LOOP;//跳出最近的for循环,进入名为MAIN_LOOP的for循环
}
}
primes[cnt++] = x;//找到新的素数,放入数组
}
for(int k : primes )//遍历
{
System.out.print(k+" ");
}
System.out.println();
in.close();
}
新方法
5.8二维数组