文件阅读Netbeans和Intellij的差异。 (额外未知的角色)

时间:2015-02-19 09:12:20

标签: java netbeans intellij-idea

在我开始玩CodeEval并接受MineSweeper挑战之前,我没有注意到这一点,当我知道代码工作时,它一直都失败了。所以我开始挖掘并尝试新的东西,直到经过几个小时的写作和重写后,我决定尝试不同的IDE,我开始使用Intellij,所以我切换到Netbeans,发现在读取文件时,它会增加一个额外的字符。前面例如

  1. Netbeans:[,X] [X,X] [X,X]和未读X如果我使用for循环。
  2. Intellij:[X,X] [X,X] [X,X]
  3. 但如果我只打印出字符串,那么角色就不会显示出来。我使用完全相同的.txt文件来测试Java中的Intellij和Python中的IDLE。他们都得到了相同的结果,但如果我使用Netbeans或提交给CodeEval,我必须考虑额外的未知字符。任何想法为什么?

    Netbeans代码的唯一区别是我使用了同一文件的整个文件路径。

    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.Arrays;
    
    /**
     * Created by Dylan
     */
    public class StackOverflow {
        public static void main(String args[]) throws IOException {
            BufferedReader br = new BufferedReader(new FileReader(new File("Files/matrix")));
            String line, content = "", MN[], prematrix[], matrix[][], temp[], temps, temp3[], AllMines = "";
            int m, n, Xm, Ym, k, count, firstCount = 0;
            while ((line = br.readLine()) != null) {
                content += line + "Dylan";
                firstCount++;
            }
            temp3 = content.split("Dylan");
            count = temp3.length;
            for (int q = 0; q < count; q++) {
                prematrix = new String[firstCount];
                prematrix[0] = temp3[q];
                temp = prematrix[0].split(";");
                temps = temp[0];
                MN = temps.split(",");
                temps = temp[1];
                prematrix = temps.split("");
                m = Integer.parseInt(MN[0]);//3
                n = Integer.parseInt(MN[1]);//5
                matrix = new String[m][n];
                k = 0;
    
                //Populates Minefield
                for (int i = 0; i < m; i++) {
                    for (int j = 0; j < n; j++) {
                        matrix[i][j] = prematrix[k];
                        k++;
                    }
                }
                //Gets max X,Y
                Xm = n - 1;
                Ym = m - 1;
                /*A matrix to match the Minefield.
                Number of touch mines will be added here*/
                int[][] mines = new int[m][n];
                for (int i = 0; i < m; i++) {
                    Arrays.fill(mines[i], 0);
                }
                //Double for loop to check how many mines
                // the position is touching
                for (int y = 0; y < m; y++) {
                    for (int x = 0; x < n; x++) {
                        if (!matrix[y][x].equalsIgnoreCase("*")) {
                            if (x != Xm && y != 0) {
                                if (matrix[y - 1][x + 1].equalsIgnoreCase("*")) {
                                    mines[y][x]++;
                                }
                            }
                            if (x != Xm && y != Ym) {
                                if (matrix[y + 1][x + 1].equalsIgnoreCase("*")) {
                                    mines[y][x]++;
                                }
                            }
                            if (x != 0 && y != Ym) {
                                if (matrix[y + 1][x - 1].equalsIgnoreCase("*")) {
                                    mines[y][x]++;
                                }
                            }
                            if (x != 0 && y != 0) {
                                if (matrix[y - 1][x - 1].equalsIgnoreCase("*")) {
                                    mines[y][x]++;
                                }
                            }
                            if (x != 0 && x != Xm) {
                                if (matrix[y][x + 1].equalsIgnoreCase("*")) {
                                    mines[y][x]++;
                                }
                                if (matrix[y][x - 1].equalsIgnoreCase("*")) {
                                    mines[y][x]++;
                                }
                            }
    
                            if (x == 0) {
                                if (matrix[y][x + 1].equalsIgnoreCase("*")) {
                                    mines[y][x]++;
                                }
                            }
    
                            if (y == 0) {
                                if (matrix[y + 1][x].equalsIgnoreCase("*")) {
                                    mines[y][x]++;
                                }
                            }
    
                            if (x == Xm) {
                                if (matrix[y][x - 1].equalsIgnoreCase("*")) {
                                    mines[y][x]++;
                                }
                            }
    
                            if (y != Ym && y != 0) {
                                if (matrix[y - 1][x].equalsIgnoreCase("*")) {
                                    mines[y][x]++;
    
                                }
                                if (matrix[y + 1][x].equalsIgnoreCase("*")) {
                                    mines[y][x]++;
    
                                }
                            }
                            if (y == Ym) {
                                if (matrix[y - 1][x].equalsIgnoreCase("*")) {
                                    mines[y][x]++;
                                }
                            }
                        } else {
                            mines[y][x] = -1;
                        }
                    }
                }
                String mineS = "";
                for (int[] p : mines) {
                    mineS += Arrays.toString(p);
                }
                mineS = mineS.replace("-1", "*").replace(",", "").replace("]", "").replace("[", "").replace(" ", "");
                System.out.println(mineS);
                AllMines += mineS + "\n";
            }
            System.out.println(AllMines);
        }
    }
    

0 个答案:

没有答案