为什么我的其他功能不正常?

时间:2016-07-06 16:11:56

标签: java file

为什么我的if-else块没有检测到gamma为空?这是我的代码。它是一个Spreadsheet应用程序,这是一个save函数,它循环遍历表中的所有单元格并将其写入文件。这是我的代码:

public void Save () {
        String FileName = JOptionPane.showInputDialog("Please enter the name for your file:");

        if (FileName == null) {
            System.err.println("You didn't enter anything");
        } else {
            int rows = Table.getRowCount();
            int columns = Table.getColumnCount();
            int alpha = 0;
            int beta = 1; 
            choicer.setCurrentDirectory(new java.io.File("Desktop"));
            choicer.setDialogTitle("Save Document");
            choicer.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
            choicer.setAcceptAllFileFilterUsed(false);
            if (choicer.showSaveDialog(new JPanel()) == JFileChooser.APPROVE_OPTION) {
                dir = String.valueOf(choicer.getSelectedFile());
            }
            File f = new File(dir + "\\" + FileName + ".txt");
            try {
                fos = new FileOutputStream(f);
                osw = new OutputStreamWriter(fos);
                w = new BufferedWriter(osw);
                for (alpha = 0; alpha <= rows - 1; alpha++) {
                    for (beta = 1; beta < columns; beta++) {
                        String gamma = String.valueOf(Table.getValueAt(alpha, beta));
                        if (gamma != null) {
                            w.write("<%! " + gamma + " !%> ");
                        } else {
                            w.write(" <%! |^-^| !%> ");
                        }                           
                    }
                    w.write("\n");
                }
            } catch (IOException e) {
                System.err.println("Some prob dude. Too big for me"); 
            } finally {
                try {
                    w.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

我尝试了重复的东西给出的链接,但这并没有解决我的问题。如果我执行if(gamma != null && !(gamma.isEmpty)),则只将null作为gamma的值写入文件。

2 个答案:

答案 0 :(得分:0)

也许,gamma是空的但不是null:

更改

if (gamma != null)

if (gamma != null && !gamma.isEmpty())

答案 1 :(得分:0)

我能想到的只有三件事会导致这种情况发生。我会在一秒钟内找到那些人。首先,你使用的是什么IDE?您是否有能力设置断点并观察变量?这将有助于您排除以下故障。 你能确保第一个for循环命中吗? 2.然后,确保你进入第二个for循环。 3.最后,字符串gamma的实际值是多少?这是您需要断点并在期望它为null时检查该变量的位置。可能你会发现它不是。当然,假设你的for循环甚至让你到达那里。

希望这有帮助!