java - 从方法返回数组

时间:2014-10-19 16:23:16

标签: java arrays methods return

我创建了这个代码段:

public static String[] get_data()
{
    conn = getInstance();
    String[] data_array = null;
    if(conn != null)
    {
        Statement query;
        try 
        {
            query = conn.createStatement();

            String sql = "SELECT data_x FROM table_x";
            ResultSet result = query.executeQuery(sql);

            result.next();
            int count = result.getInt("data_x");
            result.close();

            data_x_array = new String[count];

            for (int x = 1; x <= count; x++)
            {
                String data_x = result.getString(x);
                data_x_array[x] = data_x;
            }
        } 
        catch (SQLException e) 
        {
            e.printStackTrace();
        }
    }
    return data_x_array;
}

我刚创建了一个类,数据库中的数据收集在一个数组中。

现在我只想从这个方法返回数组。

但我得到的是:

data_array cannot be resolved to a variable

有人可以帮助我吗?

问候!

更新:

我将代码段更改为:

public static String[] get_data()
{
    conn = getInstance();
    String[] data_array = null;
    if(conn != null)
    {
        Statement query;
        try 
        {
            query = conn.createStatement();

            String sql = "SELECT data_x FROM table_x";
            ResultSet result = query.executeQuery(sql);

            result.next();
            int count = result.getInt("data_x");
            result.close();

            data_array = new String[count];

            for (int x = 1; x <= count; x++)
            {
                String data_x = result.getString(x);
                data_x_array[x] = data_x;
            }
        } 
        catch (SQLException e) 
        {
            e.printStackTrace();
        }
    }
    return data_x_array;
}

当我编译时:

Invalid value for getInt() - 'value_in_table'

有人知道吗?

问候!

5 个答案:

答案 0 :(得分:6)

还有一件事,每个人都忘了提及

String[] data_array = new String[999];
for (int x = 0; x <= 999; x++){}

将抛出ArrayIndexOutOfBoundsException。 可能的解决方案

String[] data_array = new String[999];
for (int x = 0; x < 999; x++){}

答案 1 :(得分:3)

您已在while循环中定义了变量,即return语句无法看到它。另外,您已将方法定义为static void,这意味着不会返回任何返回值。请改用static String []

答案 2 :(得分:2)

您对String[]的声明与return语句的范围不同。

您需要在范围的开头声明它。

您需要将函数的标题更改为:

public static String[] get_data()

答案 3 :(得分:2)

由于它在while循环块之外无法访问,因此编译抱怨相同。 试试这个:

public static String[] get_data()
{
conn = getInstance();
String[] data_array = null;
if(conn != null)
{
    Statement query;
    try 
    {
        query = conn.createStatement();

        String sql = "SELECT data_x FROM table_x";
        ResultSet result = query.executeQuery(sql);

        while (result.next()) 
        {
            String data_x = result.getString("data_x");
            data_array = new String[999];
            for (int x = 0; x <= 999; x++)
            {
                data_array[x] = data_x;
            }
        }
    } 
    catch (SQLException e) 
    {
        e.printStackTrace();
    }
}
return data_array;
}

答案 4 :(得分:1)

这里有两件事需要解决:

public static void get_data()

声明此方法不返回任何内容。将其更改为:

public static String[] get_data()

您的变量String[] data_array在while循环中声明,因此它只在那里知道。您的return语句在该循环之外,因此它无权访问它。

将变量移出循环:

String sql = "SELECT data_x FROM table_x";
ResultSet result = query.executeQuery(sql);
String[] data_array = new String[999];

请注意,您需要在while循环之外移动声明和初始化,否则您将通过再次初始化来覆盖先前存储的数据。还要注意,你的for循环无论如何都会覆盖当前数据......你应该考虑将行数据存储在另一个数组中,否则就会丢失。