回 帖 发 新 帖 刷新版面

主题:[讨论]各为高手帮帮忙啊,为什么运行后没有运行结果啊,麻烦帮帮忙啊

这个程序编译运行都没报错,但是运行后没有运行结果,请问是怎么会事啊,错在哪里啊?谢谢帮忙啊!~~
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("白色获胜");
    }
    }
    }
}
}
}

回复列表 (共10个回复)

沙发

最好是先说明下想要做什么,

板凳

那就相当于一个五子棋的局面,判断下是什么颜色的棋子获胜!白色棋子的坐标上用1表示,黑色棋子坐标上用-1表示,没有棋子的坐标用0表示!

3 楼

相当于一个10*10的数组,麻烦帮忙看看!~谢谢

4 楼

程序没错,只是你要打印的:
 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 楼

不会啊,根据我上边定义的数组赋的初值,有个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 楼

[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 楼


/*
  第一个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 楼

因为字数限制,所以分两个回复
//接上
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 楼

我觉得你有两个应该是多余的吧,,右上斜线应该就是左下斜线吧,所以我觉得你多余考虑了两种重复的情况,你觉得呢???不过还是很谢谢你啊,,大家研究下嘛

10 楼


哦,当真哈,条件都错了的麻,谢谢你了啊

我来回复

您尚未登录,请登录后再回复。点此登录或注册