【问题标题】:Having trouble returning an array list [duplicate]返回数组列表时遇到问题[重复]
【发布时间】:2016-03-17 20:04:25
【问题描述】:

我正在从事一个个人项目,而且我对 java 还很陌生(尝试创建一个 Web 应用程序)。我在返回我之前在方法中定义的数组列表时遇到了一些问题。 arraylist 打印正常,但由于某种原因,我的 IDE 在我尝试返回它时说它没有定义。这是我的代码,感谢您的帮助:

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import com.mysql.jdbc.Statement;

public class Fire_Emblem {

public static ArrayList<String> GetCharacters() {

        try {
            Class.forName("com.mysql.jdbc.Driver"); 
            java.sql.Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/fire_emblem","root","[redacted]");
            java.sql.Statement st = con.createStatement();
            ResultSet rs = st.executeQuery("select name from characters");
            System.out.println ("Connection successful");
            ArrayList<String> list = new ArrayList<String>();
                while (rs.next()) { 
                    list.add(rs.getString("name"));
                }
                System.out.println(list);
            }
        catch (SQLException e) {
            System.out.println(e.getMessage());
            System.out.println("Connection failed");
        }
return list;
}

}

【问题讨论】:

    标签: java


    【解决方案1】:

    您在try 块的范围内创建了列表。在try之前定义它。

    如果在程序离开创建它的范围后没有引用list,则该对象将被销毁。有关此主题的更多信息look here

    ArrayList<String> list = new ArrayList<String>();
    try {
        ...
    } 
    catch (SQLException e) {
        System.out.println(e.getMessage());
        System.out.println("Connection failed");
    }
    return list;
    

    【讨论】:

      【解决方案2】:

      list 变量在try {} 范围内。您在其范围之外引用了 list 变量。

      IDE 告诉您Cannot resolve symbol 'list',这意味着该变量未在此范围内定义。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-11
        • 2020-12-12
        相关资源
        最近更新 更多