小弟分别在两个类中写了两个方法,一个是用来往数据库中添加数据的方法getOracleData(),另一个负责从控制台接收数据的方法getData()。但是如何才能将getData()获得的数据返回给getOracleData()中呢?请各位大大帮帮忙解答!谢谢!这个是getOracleData()方法
// 抽出添加数据的方法
public static void getOracleAddData() throws Exception{

String[] st = new String[6];
Connection conn = JDBC_Connections.getOracleConnection();
String sql = "{call PRO_STU_ADD(?,?,?,?,?,?)}";
CallableStatement cstmt = conn.prepareCall(sql);
cstmt.clearBatch();

try{ //将学号数据转整形
int i = Integer.parseInt(st[0]);

//将分数数据转浮点型
float f1 = Float.parseFloat(st[2]);
float f2 = Float.parseFloat(st[3]);
float f3 = Float.parseFloat(st[4]);
float f4 = (f1+f2+f3)/3;

cstmt.setInt(1,i);
cstmt.setString(2,st[1]);
cstmt.setFloat(3,f1);
cstmt.setFloat(4,f2);
cstmt.setFloat(5,f3);
cstmt.setFloat(6,f4);

//提交数据缓冲
cstmt.addBatch();
//提交数据
conn.commit();
System.out.println("数据插入成功!");

}catch(Exception ex){
ex.printStackTrace();
} }这个是getData()方法:
public void getData() throws Exception{
try{

Scanner sc = new Scanner(System.in);
System.out.println("请输入学号:");
st[0] = sc.nextLine();
System.out.println("请输入姓名:");
st[1] = sc.nextLine();
System.out.println("请输入语文分数:");
st[2] = sc.nextLine();
System.out.println("请输入数学分数:");
st[3] = sc.nextLine();
System.out.println("请输入英语分数:");
st[4] = sc.nextLine();
DB_Operations.getOracleAddData();

}catch(Exception ex){
ex.printStackTrace();
}

}

解决方案 »

  1.   

    public void getData() throws Exception{
            try{
                
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入学号:");
                st[0] = sc.nextLine();
                System.out.println("请输入姓名:");
                st[1] = sc.nextLine();
                System.out.println("请输入语文分数:");
                st[2] = sc.nextLine();
                System.out.println("请输入数学分数:");
                st[3] = sc.nextLine();
                System.out.println("请输入英语分数:");
                st[4] = sc.nextLine();            
                DB_Operations.getOracleAddData();
                
            }catch(Exception ex){
                ex.printStackTrace();
            }
                
        }
    你的st从哪来的??
    //Type 就是你st的类型
    public Type getData() throws Exception{
    //在这里加上你st的定义
            try{
                
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入学号:");
                st[0] = sc.nextLine();
                System.out.println("请输入姓名:");
                st[1] = sc.nextLine();
                System.out.println("请输入语文分数:");
                st[2] = sc.nextLine();
                System.out.println("请输入数学分数:");
                st[3] = sc.nextLine();
                System.out.println("请输入英语分数:");
                st[4] = sc.nextLine();            
                DB_Operations.getOracleAddData();
                
            }catch(Exception ex){
                ex.printStackTrace();
            }
         return st;
                
        }
      

  2.   


    "st"是字符串数组,在getOracleAddData()方法体里已经有定义的,但是如果写成public String getData() throws Exception{}这种方式的话就会报错。如果写成String[]返回类型也会报错。究竟应该如何处理呢?
      

  3.   


    前辈能不能说得再具体些?我初学JAVA,有很多地方还不懂?
      

  4.   


    报错是因为你没有return 一个值啊
      

  5.   


       String[] st = new String[6];   public static void main(String[] args){
           getData();
           getOracleAddData();
       }
     // 抽出添加数据的方法
        public static void getOracleAddData(){
            
            Connection conn = JDBC_Connections.getOracleConnection();
            String sql = "{call PRO_STU_ADD(?,?,?,?,?,?)}";
            CallableStatement cstmt = conn.prepareCall(sql);
            cstmt.clearBatch();
            
            try{                //将学号数据转整形
                    int i = Integer.parseInt(st[0]);
                
                    //将分数数据转浮点型
                    float f1 = Float.parseFloat(st[2]);
                    float f2 = Float.parseFloat(st[3]);
                    float f3 = Float.parseFloat(st[4]);
                    float f4 = (f1+f2+f3)/3;
                    
                    cstmt.setInt(1,i);
                    cstmt.setString(2,st[1]);
                    cstmt.setFloat(3,f1);
                    cstmt.setFloat(4,f2);
                    cstmt.setFloat(5,f3);
                    cstmt.setFloat(6,f4);
                    
                    //提交数据缓冲
                    cstmt.addBatch();
                    //提交数据
                    conn.commit();
                    System.out.println("数据插入成功!");
                    
            }catch(Exception ex){
                ex.printStackTrace();
            }    } public static void getData(){
            try{
                
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入学号:");
                st[0] = sc.nextLine();
                System.out.println("请输入姓名:");
                st[1] = sc.nextLine();
                System.out.println("请输入语文分数:");
                st[2] = sc.nextLine();
                System.out.println("请输入数学分数:");
                st[3] = sc.nextLine();
                System.out.println("请输入英语分数:");
                st[4] = sc.nextLine();            
                DB_Operations.getOracleAddData();
                
            }catch(Exception ex){
                ex.printStackTrace();
            }
                
        }
      

  6.   

       public static void main(String[] args){
           getOracleAddData();
       }
     // 抽出添加数据的方法
        public static void getOracleAddData(){        String[] st =  getData();       
            Connection conn = JDBC_Connections.getOracleConnection();
            String sql = "{call PRO_STU_ADD(?,?,?,?,?,?)}";
            CallableStatement cstmt = conn.prepareCall(sql);
            cstmt.clearBatch();
            
            try{                //将学号数据转整形
                    int i = Integer.parseInt(st[0]);
                
                    //将分数数据转浮点型
                    float f1 = Float.parseFloat(st[2]);
                    float f2 = Float.parseFloat(st[3]);
                    float f3 = Float.parseFloat(st[4]);
                    float f4 = (f1+f2+f3)/3;
                    
                    cstmt.setInt(1,i);
                    cstmt.setString(2,st[1]);
                    cstmt.setFloat(3,f1);
                    cstmt.setFloat(4,f2);
                    cstmt.setFloat(5,f3);
                    cstmt.setFloat(6,f4);
                    
                    //提交数据缓冲
                    cstmt.addBatch();
                    //提交数据
                    conn.commit();
                    System.out.println("数据插入成功!");
                    
            }catch(Exception ex){
                ex.printStackTrace();
            }    } public static String[] getData(){
            String[] st = new String[6];
            try{
                
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入学号:");
                st[0] = sc.nextLine();
                System.out.println("请输入姓名:");
                st[1] = sc.nextLine();
                System.out.println("请输入语文分数:");
                st[2] = sc.nextLine();
                System.out.println("请输入数学分数:");
                st[3] = sc.nextLine();
                System.out.println("请输入英语分数:");
                st[4] = sc.nextLine();            
                DB_Operations.getOracleAddData();
                
            }catch(Exception ex){
                ex.printStackTrace();
            }
            return st;
        }
      

  7.   

    楼主你的方法是两个类里的,所以 getOracleAddData() 中定义的参数不在 getData() 中定义是不行的,这个参数肯定是在 getData() 所在的类里。如果你想要用 public String getData() throws Exception…… ,必须有 return 一个 String,看类中需要用 String[],用 public String[] getData() throws Exception…… ,return 一个 String[],这样要在 getOracleAddData() 中调用 getData() ,考虑到  getOracleAddData() 是个公用方法,数据有可能不一定全部来自 getData() ,有两个方法:
    (1)再写一个类调用 getData()得到 String[] 返回值,再调用 getOracleAddData() ,getOracleAddData() 必须要加一个参数。
    (2)楼主 getData()中调用 getOracleAddData()了,getOracleAddData()中也必须要参数。两个方法都是需要  getOracleAddData() 加个参数,这样问题就解决了。如果 getData()中的数据只用于 getOracleAddData(),那么就用第二种方法,要注意看 st 这个参数的定义,这是作为参数传入的,要和 getOracleAddData() 中原来的参数类型一致。getOracleAddData 方法:// 抽出添加数据的方法
        public static void getOracleAddData(String[] st) throws Exception{
            
            
            Connection conn = JDBC_Connections.getOracleConnection();
            String sql = "{call PRO_STU_ADD(?,?,?,?,?,?)}";
            CallableStatement cstmt = conn.prepareCall(sql);
            cstmt.clearBatch();
            
            try{                //将学号数据转整形
                    int i = Integer.parseInt(st[0]);
                
                    //将分数数据转浮点型
                    float f1 = Float.parseFloat(st[2]);
                    float f2 = Float.parseFloat(st[3]);
                    float f3 = Float.parseFloat(st[4]);
                    float f4 = (f1+f2+f3)/3;
                    
                    cstmt.setInt(1,i);
                    cstmt.setString(2,st[1]);
                    cstmt.setFloat(3,f1);
                    cstmt.setFloat(4,f2);
                    cstmt.setFloat(5,f3);
                    cstmt.setFloat(6,f4);
                    
                    //提交数据缓冲
                    cstmt.addBatch();
                    //提交数据
                    conn.commit();
                    System.out.println("数据插入成功!");
                    
            }catch(Exception ex){
                ex.printStackTrace();
            }    }getData 方法:    public void getData() throws Exception{
            try{
                
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入学号:");
                st[0] = sc.nextLine();
                System.out.println("请输入姓名:");
                st[1] = sc.nextLine();
                System.out.println("请输入语文分数:");
                st[2] = sc.nextLine();
                System.out.println("请输入数学分数:");
                st[3] = sc.nextLine();
                System.out.println("请输入英语分数:");
                st[4] = sc.nextLine();            
                DB_Operations.getOracleAddData();
                
            }catch(Exception ex){
                ex.printStackTrace(st);
            }
                
        }
      

  8.   

    刚才那个改一下:
    getData 方法:public void getData() throws Exception{
            try{
                
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入学号:");
                st[0] = sc.nextLine();
                System.out.println("请输入姓名:");
                st[1] = sc.nextLine();
                System.out.println("请输入语文分数:");
                st[2] = sc.nextLine();
                System.out.println("请输入数学分数:");
                st[3] = sc.nextLine();
                System.out.println("请输入英语分数:");
                st[4] = sc.nextLine();            
                DB_Operations.getOracleAddData(st);
                
            }catch(Exception ex){
                ex.printStackTrace(st);
            }
                
        }
      

  9.   

    getData()返回的是什么类型的数据 作为参数传给getOracleData()嘛