1.关于数组直接连等发生编译错误这个问题
之前一直以为数组是可以连等的,但是今天做那个井字棋想用数组的连等却发现编译错误。
要用逻辑与来等
Scanner in =new Scanner(System.in);
int a[]=new int [3];
for(int h=0;h<a.length;h++)
{
a[h]=in.nextInt();
}
if(a[0]==a[1]==a[2]) //这是不对的
{
System.out.println(a[0]+"和"+a[1]+"和"+a[2]);
}
if(a[0]==a[1]&&a[1]==a[2])//这是正确的
{
System.out.println(a[0]+"和"+a[1]+"和"+a[2]);
}
2.最近做的一些练习(多看几遍),虽然做出来,做的不够快。
//随机数 升序排列
Scanner in=new Scanner(System.in);
int max;
int max1;
int [] a=new int[10];
for(int i=0;i<a.length;i++)
{
a[i]=((int)(Math.random()*100));
}
for(int i=0;i<(a.length-1);i++)
{
if(a[i]>a[i+1])
{ max=a[i+1];
a[i+1]=a[i];
a[i]=max;
for(int k=0;k<i;k++)
{
if (a[i]<a[k])
{
max1=a[i];
a[i]=a[k];
a[k]=max1;
}
}
}
}
System.out.print("按升序排序为: ");
for(int i=0;i<a.length;i++)
{
System.out.print(a[i]+" ");
}
3人5门成绩,用二维数组
double total=0;
double ave=0;
double [] [] score =new double[3][5];
for(int i=0;i<3;i++)
{ total=0;
ave=0;
System.out.println("\n"+"第"+(i+1)+"个同学的成绩:");
for( int j=0;j<5;j++)
{
score[i][j]=(int)(Math.random()*100);
total+=score[i][j];
System.out.println("第"+(j+1)+"门课的成绩为:"+score[i][j]+"分");
}
for(int k=0;k<score[i].length;k++)
{
if(score[i][k]<60)
{
System.out.print("第"+(k+1)+"门 不及格"+" ");
}
}
ave=total/3;
System.out.println("\n"+"平均成绩为:"+ave);
System.out.println("总成绩为:"+total+"分");
}
3.井字棋(未完成)
//井字棋tic-tac-toe
final int size=3;
int[][]borad=new int[size][size];
/*读了多少个1*/int numofx=0;
/*读了多少个0*/int numofo=0;
//读入矩阵
for(int j=0;j<borad.length;j++)
{
for(int k=0;k<borad[j].length;k++)
{
borad[j][k]=in.nextInt();
}
}
//检查行 每一行是否有一样的1或者0
hang:for(int i=0;i<size;i++)
{
for(int j=0;j<size;j++)
{
if(borad[i][j]==1)
{
numofx++;
}
else if(borad[i][j]==0)
{
numofo++;
}
}
if(borad[i][0]+borad[i][1]+borad[i][2]==3)
{
System.out.println("x"+"胜利");
break hang;
}
else if(borad[i][0]+borad[i][1]+borad[i][2]==0)
{
System.out.println("o"+"胜利");
break hang;
}
numofx=0;
numofo=0;
}
//检查列
lie:for(int j=0;j<size;j++)
{
for(int i=0;i<size;i++)
{
if(borad[i][j]==1)
{
numofx++;
}
else if(borad[i][j]==0)
{
numofo++;
}
}
if(borad[0][j]+borad[1][j]+borad[2][j]==3)
{
System.out.println("x"+"胜利");
break lie;
}
else if(borad[0][j]+borad[1][j]+borad[2][j]==0)
{
System.out.println("o"+"胜利");
break lie;
}
numofx=0;
numofo=0;
}
//对角线
lie1:for(int i=0;i<size;i++)
{
if(borad[i][i]==1)
{
numofx++;
}
else if(borad[i][i]==0)
{
numofo++;
}
}
if(numofo==0)
{
System.out.println("o"+"胜利");
}
else if(numofx==3)
{
System.out.println("x"+"胜利");
}
numofx=0;
numofo=0;
//反对角线
for(int i=0,j=2;i<3&&j>=0;i++,j--)
{
if(borad[i][j]==0)
{
numofo++;
}
else if(borad[i][j]==1)
{
numofx++;
}
}
if(numofo==0)
{
System.out.println("o"+"胜利");
}
else if(numofx==3)
{
System.out.println("x"+"胜利");
}
//平局
boolean gotresult=false;
int total=0;
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
total+=borad[i][j];
}
if(total>0&&total<3)
{
gotresult=false;
}
}
if(gotresult)
{
System.out.println("平局");
}