主题:[讨论]各为高手帮帮忙啊,为什么运行后没有运行结果啊,麻烦帮帮忙啊
JAVA小菜
[专家分:0] 发布于 2007-10-15 16:55:00
这个程序编译运行都没报错,但是运行后没有运行结果,请问是怎么会事啊,错在哪里啊?谢谢帮忙啊!~~
package javapakege;
public class gg7_5 {
public static void main(String[] args){
int i,j;
int a[][];
a=new int[10][];
a[0]=new int[]{0,0,0,0,0,0,0,0,0,0};
a[1]=new int[]{0,0,0,0,0,0,0,0,0,0};
a[2]=new int[]{0,0,0,0,1,0,1,0,0,0};
a[3]=new int[]{0,0,0,-1,0,0,-1,1,0,0};
a[4]=new int[]{0,0,0,1,0,-1,0,1,0,0};
a[5]=new int[]{0,0,0,0,-1,0,0,0,0,0};
a[6]=new int[]{0,0,0,-1,0,1,0,0,0,0};
a[7]=new int[]{0,0,-1,0,1,0,0,0,0,0};
a[8]=new int[]{0,0,0,0,0,0,0,0,0,0};
a[9]=new int[]{0,0,0,0,0,0,0,0,0,0};
for(i=0;i<=9;i++){
for(j=0;j<=4;j++){
if(a[i][j]==a[i][j+1]&&a[i][j+1]==a[i][j+2]&&
a[i][j+2]==a[i][j+3]&&a[i][j+3]==a[i][j+4]&&
a[i][j+4]==a[i][j+5]){
if(a[i][j]==1){
System.out.println("黑色获胜");
}
else if(a[i][j]==-1){
System.out.println("白色获胜");
}
}
}
}
for(i=0;i<=4;i++){
for(j=0;j<=9;j++){
if(a[i][j]==a[i+1][j]&&a[i+1][j]==a[i+2][j]&&
a[i+2][j]==a[i+3][j]&&a[i+3][j]==a[i+4][j]&&
a[i+4][j]==a[i+5][j]){
if(a[i][j]==1){
System.out.println("黑色获胜");
}
else if(a[i][j]==-1){
System.out.println("白色获胜");
}
}
}
}
for(i=0;i<=4;i++){
for(j=0;j<=4;j++){
if(a[i][j]==a[i+1][j+1]&&a[i+1][j+1]==a[i+2][j+2]&&
a[i+2][j+2]==a[i+3][j+3]&&a[i+3][j+3]==a[i+4][j+4]&&
a[i+4][j+4]==a[i+5][j+5]){
if(a[i][j]==1){
System.out.println("黑色获胜");
}
else if(a[i][j]==-1){
System.out.println("白色获胜");
}
}
}
}
for(i=0;i<=9;i++){
for(j=0;j>=4;j++){
if(a[i][j]==a[i+1][j-1]&&a[i+1][j-1]==a[i+2][j-2]&&
a[i+2][j-2]==a[i+3][j-3]&&a[i+3][j-3]==a[i+4][j-4]&&
a[i+4][j-4]==a[i+5][j-5])
{
if(a[i][j]==1){
System.out.println("黑色获胜");
}
else if(a[i][j]==-1){
System.out.println("白色获胜");
}
}
}
}
}
}
最后更新于:2007-10-15 16:57:00
回复列表 (共10个回复)
沙发
七夜飘雪 [专家分:500] 发布于 2007-10-15 17:21:00
最好是先说明下想要做什么,
板凳
JAVA小菜 [专家分:0] 发布于 2007-10-15 18:17:00
那就相当于一个五子棋的局面,判断下是什么颜色的棋子获胜!白色棋子的坐标上用1表示,黑色棋子坐标上用-1表示,没有棋子的坐标用0表示!
3 楼
JAVA小菜 [专家分:0] 发布于 2007-10-15 18:18:00
相当于一个10*10的数组,麻烦帮忙看看!~谢谢
4 楼
sjhlovejava [专家分:1690] 发布于 2007-10-15 21:57:00
程序没错,只是你要打印的:
System.out.println("黑色获胜");或System.out.println("白色获胜");
在进行判断时,都为false,所以都不会执行打印语句。
比如在:
for(i=0;i<=9;i++){
for(j=0;j<=4;j++){
if(a[i][j]==a[i][j+1]&&a[i][j+1]==a[i][j+2]&&
a[i][j+2]==a[i][j+3]&&a[i][j+3]==a[i][j+4]&&
a[i][j+4]==a[i][j+5]){
if(a[i][j]==1){
System.out.println("黑色获胜");
}
else if(a[i][j]==-1){
System.out.println("白色获胜");
}
}
}
}
中加上两句:
for (i = 0; i <= 9; i++) {
for (j = 0; j <= 4; j++) {
if (a[i][j] == a[i][j + 1] && a[i][j + 1] == a[i][j + 2]
&& a[i][j + 2] == a[i][j + 3]
&& a[i][j + 3] == a[i][j + 4]
&& a[i][j + 4] == a[i][j + 5]) {
System.out.println(a[i][j] == 1);
System.out.println(a[i][j] == -1);
if (a[i][j] == 1) {
System.out.println("黑色获胜");
} else if (a[i][j] == -1) {
System.out.println("白色获胜");
}
}
}
}
你会看到控制台打印的都是false
5 楼
JAVA小菜 [专家分:0] 发布于 2007-10-16 19:45:00
不会啊,根据我上边定义的数组赋的初值,有个for循环是适合的啊,就是这个:
for(i=0;i<=9;i++){
for(j=0;j>=4;j++){
if(a[i][j]==a[i+1][j-1]&&a[i+1][j-1]==a[i+2][j-2]&&
a[i+2][j-2]==a[i+3][j-3]&&a[i+3][j-3]==a[i+4][j-4]&&
a[i+4][j-4]==a[i+5][j-5])
{
if(a[i][j]==1){
System.out.println("黑色获胜");
}
else if(a[i][j]==-1){
System.out.println("白色获胜");
}
}
}
}
这个循环应该适合我定义的那个数组吧,你具体把我定义的数组按五子棋的形式画出来看看呢!~~谢谢
6 楼
sjhlovejava [专家分:1690] 发布于 2007-10-16 19:52:00
[quote]不会啊,根据我上边定义的数组赋的初值,有个for循环是适合的啊,就是这个:
for(i=0;i<=9;i++){
for(j=0;j>=4;j++){
if(a[i][j]==a[i+1][j-1]&&a[i+1][j-1]==a[i+2][j-2]&&
a[i+2][j-2]==a[i+3][j-3]&&a[i+3][j-3]==a[i+4][j-4]&&
a[i+4][j-4]==a[i+5][j-5])
{
if(a[i][j]==1){
System.out.println("黑色获胜");
}
else if(a[i][j]==-1){
System.out.println("白色获胜");
}
}
}
}
这个循环应该适合我定义的那个数组吧,你具体把我定义的数组按五子棋的形式画出来看看呢!~~谢谢[/quote]
刚 从新 看了 下,原来 是你这写错了:
for(j=0;j>=4;j++){
j=0时,j>=4条件 就不成立了,当然 就 不会 执行 循环内的语句,更不用说j的自加了
7 楼
yuru_1012 [专家分:580] 发布于 2007-10-17 09:20:00
/*
第一个for判断行
第二个for判断列
第三个for判断右下斜线(从右下对角线到第0行第5列结束)
第四个for判断右下斜线(从第4行第0列开始到右下对角线)
第五个for判断右上斜线(从第4行第0列开始到右上对角线)
第六个for判断右上斜线(从右上对角线到第9行第5列结束)
*
* */
public class Test {
public static void main(String[] args) {
int i, j;
int a[][];
a = new int[10][];
a[0] = new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
a[1] = new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
a[2] = new int[] { 0, 0, 0, 0, 1, 0, 1, 0, 0, 0 };
a[3] = new int[] { 0, 0, 0,-1, 0, 0,-1, 1, 0, 0 };
a[4] = new int[] { 0, 0, 0, 1, 0,-1, 0, 1, 0, 0 };
a[5] = new int[] { 0, 0, 0, 0,-1, 0, 0, 0, 0, 0 };
a[6] = new int[] { 0, 0, 0,-1, 0, 1, 0, 0, 0, 0 };
a[7] = new int[] { 0, 0,-1, 0, 1, 0, 0, 0, 0, 0 };
a[8] = new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
a[9] = new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
for (i = 0; i <= 9; i++) {
for (j = 0; j <= 5; j++) {
if (a[i][j] == a[i][j + 1] && a[i][j + 1] == a[i][j + 2]
&& a[i][j + 2] == a[i][j + 3]
&& a[i][j + 3] == a[i][j + 4]) {
if (a[i][j] == 1) {
System.out.println("黑色赢1");
return;
} else if (a[i][j] == -1) {
System.out.println("白色赢1");
return;
}
}
}
}
for (j = 0; j <= 9; j++) {
for (i = 0; i <= 5; i++) {
if (a[i][j] == a[i + 1][j] && a[i + 1][j] == a[i + 2][j]
&& a[i + 2][j] == a[i + 3][j]
&& a[i + 3][j] == a[i + 4][j]) {
if (a[i][j] == 1) {
System.out.println("黑色赢2");
return;
} else if (a[i][j] == -1) {
System.out.println("白色赢2");
return;
}
}
}
}
for (j = 0; j <= 5; j++) {
for (i = 0; i + j <= 5; i++) {
int td = i + j;
if (a[i][td] == a[i + 1][td + 1]
&& a[i+1][td + 1] == a[i+2][td + 2]
&& a[i+2][td + 2] == a[i+3][td + 3]
&& a[i+3][td + 3] == a[i+4][td + 4]) {
if (a[i][td] == 1) {
System.out.println("黑色赢3");
return;
} else if (a[i][td] == -1) {
System.out.println("白色赢3");
return;
}
}
}
}
8 楼
yuru_1012 [专家分:580] 发布于 2007-10-17 09:21:00
因为字数限制,所以分两个回复
//接上
for (i = 5; i > 0; i--) {
for (j = 0; i + j <= 5; j++) {
int tr = i + j;
if (a[tr][j] == a[tr + 1][j + 1]
&& a[tr + 1][j + 1] == a[tr + 2][j + 2]
&& a[tr + 2][j + 2] == a[tr + 3][j + 3]
&& a[tr + 3][j + 3] == a[tr + 4][j + 4]) {
if (a[tr][j] == 1) {
System.out.println("黑色赢4");
return;
} else if (a[tr][j] == -1) {
System.out.println("白色赢4");
return;
}
}
}
}
for (i = 5; i <= 9; i++) {
for (j = 0; j + 5 <= i; j++) {
int tr = i -j ;
if (a[tr][j] == a[tr - 1][j + 1]
&& a[tr - 1][j + 1] == a[tr - 2][j + 2]
&& a[tr - 2][j + 2] == a[tr - 3][j + 3]
&& a[tr - 3][j + 3] == a[tr - 4][j + 4]) {
if (a[tr][j] == 1) {
System.out.println("黑色赢5");
return;
} else if (a[tr][j] == -1) {
System.out.println("白色赢5");
return;
}
}
}
}
for (j = 1; j <= 5; j++) {
for (i = 9; i-j >= 4; i--) {
int td = 9 + j - i;
if (a[i][td] == a[i - 1][td + 1] && a[i - 1][td + 1] == a[i - 2][td + 2]
&& a[i - 2][td + 2] == a[i - 3][td + 3]
&& a[i - 3][td + 3] == a[i - 4][td + 4]) {
if (a[i][td] == 1) {
System.out.println("黑色赢6");
return;
} else if (a[i][td] == -1) {
System.out.println("白色赢6");
return;
}
}
}
}
}
}
9 楼
JAVA小菜 [专家分:0] 发布于 2007-10-18 10:29:00
我觉得你有两个应该是多余的吧,,右上斜线应该就是左下斜线吧,所以我觉得你多余考虑了两种重复的情况,你觉得呢???不过还是很谢谢你啊,,大家研究下嘛
10 楼
JAVA小菜 [专家分:0] 发布于 2007-10-18 10:39:00
哦,当真哈,条件都错了的麻,谢谢你了啊
我来回复