Java学习笔记(五)数组

5.1 初试数组

  • 用数组求最大公约数
import java.util.Scanner;

public class Gcd {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in = new Scanner(System.in);
        int a = in.nextInt();
        double sum=0;
        int count = 0;  
        int[] numbers = new int [100];
        while(a!=-1)
        {
            numbers[count] = a ;
            sum = sum +a;
            count++;
            a = in.nextInt();
        }
        double average =sum/count;
        for(int i=0;i<count;i++)
        {
            if(numbers[i] > average)
            {
                System.out.println(numbers[i]);
            }
        }
        System.out.println(sum/count);
            }

}

tips:
1, 求最大公约数,用到欧几里得法。
2, int[] <数组名> = new int[大小]

5.2 创建数组

数组是一种容器
1,其中的所有元素具有相同的数据类型
2,一旦创建,不能改变大小
3,数组中每个数据叫元素
4,元素的个数必须要给出
5,个数可以是变量
6,元素的编号重0开始
7,我们通过索引或下标访问数组数据
8,创建的数组中,每个值得默认值是0
9,数组可以直接用{}给出初始值
10,length可以知道数组的大小
11,数组变量是数据的管理者,普通是数据的所有者
12,数组必须创建出来交给管理者管理
13,数组变量之间的赋值时管理权限的赋予
14,数组变量之间的比较判断是否管理同一个数组

.length

for(I=0,i《grade.length;++i)
Sum = sum + grade【i】;
.length 表示数组中有多少个元素引用块内容

5.3 投票统计

import java.util.Scanner;

public class Vote {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in = new Scanner(System.in);
        int[] numbers = new int[10];
        int x;
        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]);
        }
    }

}

5.4 数组计算

int[] number = {0,1,2,3,4,5,6,};
可以用大括号直接给数组赋值

5.5 数组计算

For each
for(类型,变量,数组)

遍历数组date

forint k:date)
{
}

5.6 二维数组

Int[][] = new int [][];
For(i=0,i<length,i++)
For(j=0,j<length,j++)

二维数组的遍历

int[][] date = new int [m][n];
for(i=0;i<m;i++)
{
    for(j=0;j<m;j++)    
}

二维数组的初始化

int[][] a = {
{1,2,3,4}
{1,2,3}
};

编译器来数数
每行一个大括号,逗号分隔。
最后的逗号可以省略,古老的传统
如果省略,表示补零

作业

井字棋

题目内容:

嗯,就是视频里说的那个井字棋。视频里说了它的基本思路,现在,需要你把它全部实现出来啦。

你的程序先要读入一个整数n,范围是[3,100],这表示井字棋棋盘的边长。比如n=3就表示是一个3x3的棋盘。然后,要读入n行,每行n个数字,每个数字是1或0,依次表示[0,0]到[n-1,n-1]位置上的棋子。1表示X,0表示O(大写字母O)。

你的程序要判断其中是否存在某一方获胜,获胜的条件是存在整行或整列或整条对角线或整条反对角线上是相同的棋子。如果存在,则输出代表获胜一方字母:X或O(大写字母X或O);如果没有任何一方获胜,则输出NIL(三个大写字母,中间是字母I(India的I)。

注意:所给的棋盘上的棋子分布可能出现同一个棋子有多处满足获胜的条件,但是不会出现两种棋子都获胜的情况。

输入格式:

一个代表棋盘大小的数字n,后面跟上nxn个0或1的数字。

输出格式:

三种输出之一:

X
O
NIL

均为大写字母。

输入样例:

4
1 0 0 1
0 1 0 0
0 0 1 0
1 0 0 1

输出样例:

X
import java.util.Scanner;

public class jinziq {

    private static Scanner in;

    public static void main(String[] args) {
        in = new Scanner(System.in);
        int n =in.nextInt();
        int got = -1;
        int sum1 =0 ,sum2 = 0,sum3=0,sum4=0;
        int [][] numbers = new int[n][n];           
            //输入数据
        for(int i=0;i<numbers.length;i++)
        {
            for(int j=0;j<numbers[i].length;j++)
            {
                numbers[i][j]=in.nextInt();
            }
        }                   
        breakpoint:
        if(n>2)
        {   
        for(int i=0;i<numbers.length;i++)
        {               
            //判断行   
            sum1 = 0;
            for(int j=0;j<numbers[i].length;j++)
            {   
                sum1 = sum1 +numbers[i][j];
            }
            if(sum1==0)
            {
                got = 0;
                break breakpoint;
            }
            else if(sum1==n)
            {
                got = 1;
                break breakpoint;
            }
            //判断列
            sum2 =0;
            for(int j=0;j<numbers[i].length;j++)
            {
                sum2 = sum2 +numbers[j][i];
            }
            if(sum2==0)
            {
                got = 0;
                break breakpoint;
            }
            else if(sum2==n)
            {
                got = 1;
                break breakpoint;
            }

        }                   
            for(int i=0,a;i<numbers.length;i++)
                {
                //判断对角线
                sum3 = sum3 +numbers[i][i];
                //判断反对角线
                a=n-1;
                sum4 = sum4 +numbers[i][a]; 
                }
            if(sum3==0||sum4==0)
            {
                got = 0;
                break breakpoint;
            }
            else if(sum3==n||sum4==n)
            {
                got = 1;
                break breakpoint;
            }       
        }else
        {
            System.out.println("输入的n必须大于2");
        }
        switch(got)
        {
        case 0 : System.out.println("O");
        break;
        case 1 : System.out.println("X");
        break;
        default : System.out.println("NIL");
        break;
        }

                                        }
                        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值