关于java数组的学习心得

 求平均数并打印出大于平均数的数

 public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        int x;
        int [] numbers = new int [100];
        //定位数组并创建了数组
        double sum = 0;
        int cnt = 0;
        x = in.nextInt();
        while ( x != -1 )
        {
            numbers [cnt] = x;
            // numbers[0] = x;
            sum += x;
            cnt ++;
            x = in.nextInt();
        }
        if (cnt>0 )
        {
            double average = sum/cnt;
            for ( int i = 0; i<cnt; i++)
            {
                if (numbers[i] > average)
                {
                    System.out.println(numbers[i]);
                }
            }
            System.out.println(sum/cnt);
        }
    }

数组是一种容器,特点是

1.其中所有的元素具有相同的数据类型;

2.一旦创建,不能改变大小

数组是一种数据结构,能记录同一种类型的多个数据


1.数组中的每个数据叫做元素;

2.所有的元素具有相同的数据类型


定义数组变量


<类型>[]<名字>=new <类型>[元素个数];

int[]  grades = new int[100];

double[] averages = new double [20];

元素个数必须是整数;

元素个数必须给出;

元素个数可以是变量

int[] a = new int[10]

创建了一个int型的数组

10个元素:a[0],a[1],...,a[9]

每个元素是一个int 的变量

可以读和写:a[2] = a[1] +6;

有效的下标

最小的下标是0,最大的下标是数组的元素个数-1;

编译器不会检查看你是否使用了有效的下标;

运行时出现了无效的下标,程序会终止进行

 根据上面对程序加以更改

改为先让用户输入我们要输入多少个数字,然后在进行其他计算
   
 public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        double sum = 0;
        int cnt = 0;
        cnt = in.nextInt();
        if (cnt>0)
        {
            int[] numbers = new int[cnt];
            for (int i = 0; i<cnt; i++)
            {
                numbers[i] = in.nextInt();
                sum += numbers[i];
            }
            double average = sum/cnt;
            for ( int i = 0; i<cnt; i++ )
            {
                if ( numbers[i] > average)
                {
                    System.out.println(numbers[i]);
                }
            }
        }
    }

投票系统

 public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        int x;
        int[] numbers = new int[10];
        x = in.nextInt();
        while ( x!=-1)
        {
            if (x>=0 && x<=9)
            {
                numbers[x] ++;
            }
            x = in.nextInt();
        }
        for (int i=0;i<numbers.length;i++)
        {
            System.out.println(i+":"+numbers[i]);
        }
    }

 直接初始化数组

new创建的数组会得到默认的0值

int[] scores = {1,2,3,6,76,8,,3,2,34,243};

直接用大括号给出的数组的所有元素的初始值;

不需要给出数组的大小,编译器用length得到 


数组变量

数组变量是数组的管理者而非数组本身

数组必须创建出来然后交给数组变量来管理

数组变量之间的赋值是管理权限的赋予

数组变量之间的比较是判断是否管理同一个数组


遍历数组

通常都是使用for循环,让循环变量i从0到<数组的length,这样循环体内最大的i正好是数组最大的有效下标

常见的错误是:
1.循环结束条件是<=数组长度
2.离开循环后,继续用i的只来做数组元素的下标

for-each


for(<类型> <变量>:<数组>)

{
...
}


 判断是否能被已知的且<的素数整除

  
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<50;x++)
        {
            for ( int i = 0;i<cnt;i++)
            {
                if (x % primes[i] == 0)
                {
                    continue MAIN_LOOP;
                }
            }
            primes[cnt++] = x;
        }
        for (int k:primes)
        {
            System.out.print(k+" ");
        }
    }

打印前100个素数

遍历数组为true然后每个数的倍数都标记为false
public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        boolean[] isPrime= new boolean[100];
        for(int i =0; i<isPrime.length;i++)
        {
            isPrime[i] = true;
        }
        for (int i=2;i<isPrime.length;i++)
        {
            if(isPrime[i])
            {
                for(int k= 2;i*k<isPrime.length;k++)
                {
                    isPrime[i*k] = false;
                }
            }
        }
        for (int i=2;i<isPrime.length;i++)
        {
            if(isPrime[i])
            {
                System.out.print(i+" ");
            }
        }
    }

 二维数组

int[][] a = new int[3][5]
通常理解为a是一个3行5列的矩阵

for ( i=0; i<3; i++)
{
    for ( j=0; j<5; j++)
    {
		a[i][j] = i*j;
	}
}
int[][] a = {
    {1,2,3,4},
    {1,2,3},
};
编译器来数数,每行一个{}分开
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值