当变量发生变化时,方法保留旧参数

时间:2015-05-19 22:17:31

标签: java

在我的代码中我有一个actionperformed,在其中我调用一个带有参数的方法,当我调用该方法时,问题是当第一次执行actionperformed时它采用正确的参数,然后当执行actionperformed时执行方法头中使用的第二次变量已更改,但该方法保留旧参数,我无法找到如何修复它。

这是方法代码:

    protected int searchString(int j, String str, String[][] B) {
    int exist = -1;

        for (int i = 0; i < B[B.length - 1].length; i++) {
            if (B[j][i].equals(str)) {
                exist = i;
                search = true;
                System.out.println(B[j][i]);
            }
        }
    System.out.println(search);
    return exist;

}

这就是我所说的:

chooser.submitButton.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent arg0) {
            try {
                System.out.println(filePath);
                A = fl.fileReader(filePath);
                System.out.println(search);
            if (chooser.neTypeCbBox.getSelectedItem().equals("BSC/RNC")) {
                if (chooser.operationCbBox.getSelectedItem().equals(
                        "PS throughput usage (SW\\HW)")) {

                    if (chooser.bscTypeCbBox.getSelectedItem()
                            .equals("G U")) {

                        searchString(
                                4,
                                "Average Total Throughout of UL and DL PS Services for RNC (kbit/s)",
                                A);
                    } else if (chooser.bscTypeCbBox.getSelectedItem()
                            .equals("U O")) {
                        searchString(4,
                                "VS.PSLoad.MaxThruput.RNC (kbit/s)", A);
                    }
                    else if (chooser.operationCbBox.getSelectedItem().equals(
                        "DPU usage")) {
                    if (chooser.bscTypeCbBox.getSelectedItem()
                            .equals("G U")) {
                        searchString(4,
                                "AR9760:Average CPU Usage of the DPU (%)",
                                A);
                    } else if (chooser.bscTypeCbBox.getSelectedItem()
                            .equals("U O")) {
                        searchString(4, "VS.DPU.CPULOAD.MEAN (%)", A);
                        System.out.println(search);
                    }
                    if (search) {
                        chooser.setVisible(false);
                        welcome.rightPanel
                                .add(dpuUsage, BorderLayout.NORTH);
                        welcome.rightPanel.remove(chooser);
                        dpuUsage.setVisible(true);
                        search = false;
                    }
                }
}
}
 } catch (IOException e1) {
                JOptionPane.showMessageDialog(null,
                        e1.getLocalizedMessage(), "Error",
                        JOptionPane.ERROR_MESSAGE);
                e1.printStackTrace();
            }

3 个答案:

答案 0 :(得分:0)

该方法无法保持相同的参数。可能发生的是第一个条件总是被评估为true,这导致使用底层块中的参数调用方法。

答案 1 :(得分:0)

这是我在我的控制台中得到的:

D:\Downloads\UO DPU usage(03112015 1540)_20150311_154036.xls
D:\Downloads\UO DPU usage(03112015 1540)_20150311_154036.xls
reading..
D:\Downloads\UO DPU usage(03112015 1540)_20150311_154036.xls
false
VS.DPU.CPULOAD.MEAN (%)
true
true
D:\Downloads\UO CPU usage(03112015 1541)_20150311_154121.xls
D:\Downloads\UO CPU usage(03112015 1541)_20150311_154121.xls
reading..
D:\Downloads\UO CPU usage(03112015 1541)_20150311_154121.xls
false
VS.DPU.CPULOAD.MEAN (%)
true
true

文件路径发生变化,所以A也会这样做,但是当我调用searchString时,它会影响变量搜索的true,而字符串“VS.DPU.CPULOAD.MEAN(%)”不包含在第二个文件中。

答案 2 :(得分:0)

我猜你在第一场比赛后没有将变量search重置为假?至少在您提供的代码段中就是这种情况。