JAVA IF ELSE语句导致我的代码出错

时间:2016-05-15 02:20:37

标签: java compiler-errors cannot-find-symbol

        Part part = request.getPart("file");
        if (part != null){
        String fileName = extractFileName(part);
        String filePath = savePath + File.separator + fileName;
        part.write(savePath + File.separator + fileName);
        String imageName = fileName;
        } else{
            String fileName = "avatar.jpg";
            String filePath = savePath + File.separator + fileName;
            part.write(savePath + File.separator + fileName);
            String imageName = fileName;
        }

将if else语句插入代码后,我底部的代码得到了这样的错误:imageName无法解析为变量,filePath无法解析为变量。但是,一旦我评论了我的if else声明,一切都很好。有人能告诉我哪里出错了吗?

        request.setAttribute("Pic", filePath);
        request.setAttribute("PicName", imageName);

2 个答案:

答案 0 :(得分:5)

您的“filePath”和“imageName”变量仅在if或else块中可见。在if / then块之前声明这些变量,然后在if / then代码中设置变量,而不是重新声明它。

String filePath = "";
String imageName = "";
if (...) {
...
} else {
...
}
request.setAttribute("Pic", filePath);
request.setAttribute("PicName", imageName);

有关范围的更多信息,请参阅http://www.java-made-easy.com/variable-scope.html

答案 1 :(得分:1)

同意@ CConrad96。但是,可以进行更多改进,例如,ifelse上的最后3行是相同的。另外,如果你要写imageName = fileName为什么不去掉一个?最后,关于part.write的论点与filePath具有相同的价值,为什么不使用它呢?

String fileName:
Part part = request.getPart("file");
if (part != null){
    fileName = extractFileName(part);
} else{
    fileName = "avatar.jpg";
}

String filePath = savePath + File.separator + fileName;
part.write(filePath);

request.setAttribute("Pic", filePath);
request.setAttribute("PicName", fileName);