学习Java第五天
1.学习内容
做了10个二维数组的题目,7个简单的二维数组题目(个人觉得较为简单,没有写出)
对二维数组的更深理解,对tic-tac-toe的编写:
首先要列出矩阵:
final int SIZE = 3; //读入矩阵
int[][] broad = new int[SIZE][SIZE];
boolean gotResult = false;
int numOfX = 0;
int numOfO = 0;
for(int i = 0;i<SIZE;i++)
{
for(int j = 0;j<SIZE;j++)
{
broad[i][j] = in.nextInt();
}
}
再检查行,检查列:
for(int i = 0;i < SIZE; i++) //检查行
{
numOfX = 0;
numOfO = 0;
for(int j = 0;i < SIZE;i++)
{
if(broad[i][j]==1)
{
numOfX++;
}
else
{
numOfO++;
}
}
if(numOfX == SIZE || numOfO == SIZE);
{
gotResult = true;
break;
}
if(!gotResult) //检查列
{
for(int i = 0;i < SIZE; i++)
{
numOfX = 0;
numOfO = 0;
for(int j = 0;i < SIZE;i++)
{
if(broad[j][i]==1)
{
numOfX++;
}
else
{
numOfO++;
}
}
if(numOfX == SIZE || numOfO == SIZE);
{
gotResult = true;
break;
}
}
再对对角线进行检查:
if(!gotResult) //主对角线
{
numOfX = 0;
numOfO = 0;
for(int i = 0;i < SIZE; i++)
{
if(broad[j][i]==1)
{
numOfX++;
}
else
{
numOfO++;
}
}
if(numOfX == SIZE || numOfO == SIZE);
{
gotResult = true;
}
}
if(!gotResult) //次对角线
{
numOfX = 0;
numOfO = 0;
for(int i = 0;i < SIZE; i++)
{
if(broad[i][SIZE-i-1]==1)
{
numOfX++;
}
else
{
numOfO++;
}
}
if(numOfX == SIZE || numOfO == SIZE);
{
gotResult = true;
}
}
输出结果:
if(gotResult)
{
if(numOfX == SIZE)
{
System.out.println("X WIN");
}
else
{
System.out.println("O WIN");
}
}
题目:期末考试结束,班主任拿到了本班学生的成绩汇总表,由m行n列组成(本班共有m名学生,本学期有n门课程),每行是一个同学的n门课程成绩,请编写程序,计算并输出每门课的平均分,结果保留2位小数。
(个人做的时候当成6名学生,3门课程)
in = new Scanner(System.in);
int m=in.nextInt();
int n=in.nextInt();
int[][] a = new int[m+n][n+m];
for(int i=0; i<m; i++)
{
for(int j=0; j<n; j++)
{
a[i][j]=in.nextInt();
}
}
for(int i=0; i<n; i++)
{
double sum=0;
for(int j=0; j<m; j++)
{
sum += a[j][i];
}
sum /= m;
System.out.printf("%.2f",sum);
if(i!=n-1)
System.out.print(" ");
}
2.今天所遇到的困难:
对于二维数组做杨辉三角,对内层循环没有理解;
一个二维数组的名词:遍历 ,不太理解,不知道什么时候,什么情况下可以用遍历。
3.明天要学习的内容:Java的适用对象。