黑马程序员技术交流社区

标题: 新手入学四天 写了段代码 不知道哪里会有问题 求前辈指教 [打印本页]

作者: ylz1997    时间: 2016-10-31 22:11
标题: 新手入学四天 写了段代码 不知道哪里会有问题 求前辈指教
我的主要思想是实现一个类似连连看的小游戏 代码如下:由于刚上基础班4天 看不出哪里有问题  请各位前辈指教
import java.util.*;
class Connerct {
        public static void main(String[] args){
                Scanner in = new Scanner(System.in);
                Game g = new Game();
                g.ini();
                g.print_1();
                System.out.println("因时间有限 本程序每一行的六个数字都不相同");
                while(true) {
                        int i,j,k,l;
                        System.out.println("请输入你选择的第一个坐标(用Enter分隔 输入错误时游戏结束):");
                        i = in.nextInt();
                        j = in.nextInt();
                        if(g.play(i-1,j-1)) {
                                continue;
                        }
                        System.out.println("请输入你选择的第二个坐标(用Enter分隔 输入错误时游戏结束):");
                        k = in.nextInt();
                        l = in.nextInt();
                        /*if(i == k && j == l) {                                //语句作用重复
                                System.out.println("输入坐标相同,请重新输入");
                                continue;
                        }*/
                        if(g.play(k-1,l-1)) {
                                continue;
                        }
                        g.judge(i-1,j-1,k-1,l-1);
                        g.print_2();
                        if(g.win()) {
                                System.out.println("恭喜你过关了");
                                return;
                        }

                }
        }
}


class Game {
        Random random = new Random();
        static Scanner in = new Scanner(System.in);
        public Game() {
        }
        static {
                System.out.println("请选择操作难度:");
        }
        int a =2 * in.nextInt();
        int[][] arr = new int[a][6];
        String[][] string = new String[a][6];

        public void ini() {
                for(int k = 0;k < arr.length;k++) {
                for (int i = 0;i<arr[k].length ;i++ ) {
                        arr[k][i] = random.nextInt(6);
                        for(int j = 0;j<i;j++ ) {
                                if(arr[k][j] == arr[k][i]) {
                                        i--;
                                }
                        }
                }
        }
}

        public void print_1() {                                                                //用于String数组的初始化
                System.out.println("\t一\t二\t三\t四\t五\t六\t");
                for(int i = 0;i < string.length;i++) {
                        System.out.print(i+1+"\t");
                        for(int j = 0;j < string[i].length;j++) {
                                string[i][j] = "?";
                                System.out.print(string[i][j]+"\t");
                                //System.out.print(arr[i][j]+"\t");                        输出数组值
                        }
                        System.out.println("\n");
                }

        }
        public void print_2() {                                                                //用于输出显示后的String数组
        System.out.println("\t一\t二\t三\t四\t五\t六\t");
        for(int i = 0;i < string.length;i++) {
                System.out.print(i+1+"\t");
                for(int j = 0;j < string[i].length;j++) {
                        System.out.print(string[i][j]+"\t");
                        //System.out.print(arr[i][j]+"\t");                        输出数组值
                }
                System.out.println("\n");
        }

}
        public boolean play(int a,int b) {                                        //对选中的数字给予String数组中相同位置的替换
                if(string[a][b] !="?") {
                        System.out.println("该位置数字已显示");
                        return true;
                }else {
                        int temp = arr[a][b];                                                //temp变量可以不定义
                        string[a][b] = String.valueOf(temp);                //String.valueOf() 暂时未学到
                        print_2();
                        return false;
                }
        }

        public void judge(int a,int b,int c,int d) {        //用于判断数字是否相等  如果不相等 把String中相同位置的内容重新改成"?"
                if(arr[a][b] ==arr[c][d]) {
                }else {
                        string[a][b] = "?";
                        string[c][d] = "?";
                }
        }

        public boolean win() {                                                        //用于String数组中是否还有"?"  
                for(int i = 0;i < arr.length; i ++) {
                        for (int j = 0;j < arr[i].length ; j ++ ) {
                                if(string[i][j] == "?") {
                                        return false;
                                }else {
                                        continue;
                                }
                        }
                }
                return true;
        }
}






作者: shu307856810    时间: 2016-10-31 22:21
代码第五行应该是Scanner sc

作者: ylz1997    时间: 2016-10-31 22:28
shu307856810 发表于 2016-10-31 22:21
代码第五行应该是Scanner sc

sc和in一样  都只是一个标识符  只要合法就行吧/...
作者: shu307856810    时间: 2016-10-31 23:16
ylz1997 发表于 2016-10-31 22:28
sc和in一样  都只是一个标识符  只要合法就行吧/...

哦哦 是我才疏学浅

作者: efkllx    时间: 2016-10-31 23:40
不能用in命名的

作者: wj2826    时间: 2016-10-31 23:48
刚进黑马四天,这么吊,学长我表示不想活了

作者: liyudong    时间: 2016-11-1 01:00
牛犇,赞,向楼主学校

作者: HermitXU    时间: 2016-11-1 06:46
四天?!太牛叉了

作者: ylz1997    时间: 2016-11-1 07:06
efkllx 发表于 2016-10-31 23:40
不能用in命名的

为啥啊?我开始一直这样用的啊。。

作者: ylz1997    时间: 2016-11-1 07:08
shu307856810 发表于 2016-10-31 23:16
哦哦 是我才疏学浅

兄弟  我的过。。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2