目的:在一个自己写的类A 里调用另一个已经编译过的类B。A和B在同一个目录下。使用TOMCAT。
在编译类A的时候出错,刚刚看JAVA三天,现在还有点搞不清晨面的关系,请大侠们帮忙看看。
编译类A时出错信息:
C:\Documents and Settings\Shaun>javac C:\jakarta-tomcat\webapps\Assignment1\WEB-
INF\classes\mypack\ShowBalance.java
C:\jakarta-tomcat\webapps\Assignment1\WEB-INF\classes\mypack\ShowBalance.java:47
: cannot resolve symbol
symbol  : class BankCustomer
location: class mypack.ShowBalance
                        BankCustomer bc = new BankCustomer(userid, username, bal
ance, level);
                        ^
C:\jakarta-tomcat\webapps\Assignment1\WEB-INF\classes\mypack\ShowBalance.java:47
: cannot resolve symbol
symbol  : class BankCustomer
location: class mypack.ShowBalance
                        BankCustomer bc = new BankCustomer(userid, username, bal
ance, level);
                                              ^
2 errors类A的代码:
package mypack;import java.io.*;
import java.sql.*;
import java.util.*;public class ShowBalance {
public ShowBalance(String UserName)
throws IOException{

try{ String clientName = UserName;

//connect to database
String dbUrl = "jdbc:mysql://localhost:3306/balancecontrol";
String dbUser = "Jay";
String dbPwd = "123456";

//load driver
Class.forName("com.mysql.jdbc.Driver");
//regesister driver
java.sql.DriverManager.registerDriver(new com.mysql.jdbc.Driver());

Connection con = java.sql.DriverManager.getConnection(dbUrl,dbUser,dbPwd);
Statement stmt = con.createStatement();

String sql = "select user_id, user_name, balance, level from user_balance where user_name = '" + clientName + "' ";
ResultSet rs = stmt.executeQuery(sql); 

int userid = 1000;
String username = "New Customer";
float balance = 0;
int level = 3;

if(rs.next()){
userid = rs.getInt("user_id");
username = rs.getString("user_name");
balance = rs.getFloat("balance");
level = rs.getInt("level");
}

rs.close();
stmt.close();
con.close();

BankCustomer bc = new BankCustomer(userid, username, balance, level);

}

catch(Exception e){
throw new IOException(e.getMessage());
}
}
    
}类B的代码:
package mypack;public class BankCustomer{ private int userid = 1000;
private String username = "New Customer";
private float balance = 0;
private int level = 3;

public void Bankcustomer(int userid, String username, float balance, int level){
this.userid = userid;
this.username = username;
this.balance = balance;
this.level = level;
}

public int getUserID(){
return userid;
} public String getUserName(){
return username;
} public float getBalance(){
return balance;
}

public int getLevel(){
return level;
}
}

解决方案 »

  1.   

    在BankCustomer里把 public void Bankcustomer(int userid, String username, float balance, int level){
            this.userid = userid;
            this.username = username;
            this.balance = balance;
            this.level = level;    
    }改成 public void Bankcustomer(int userid1, String username1, float balance1, int level1){
            this.userid = userid1;
            this.username = username1;
            this.balance = balance1;
            this.level = level1;    
     }注意形参名不要与本身变量名相同
      

  2.   

    不好意思,刚才的错了
    应该是public Bankcustomer(int userid, String username, float balance, int level){
            this.userid = userid;
            this.username = username;
            this.balance = balance;
            this.level = level;    
    }
      

  3.   

    还有注意大小写,构造函数名与类名相同public BankCustomer(int userid, String username, float balance, int level){
            this.userid = userid;
            this.username = username;
            this.balance = balance;
            this.level = level;    
    }
      

  4.   

    非常感谢你的回复,不过这个应该不是问题。问题是不能在类A里去NEW一个类B
    BankCustomer bc = new BankCustomer(userid, username, balance, level);
      

  5.   

    我试过不使用VOID,但是会出现一个编译错误:C:\Documents and Settings\Shaun>javac C:\jakarta-tomcat\webapps\Assignment1\WEB-
    INF\classes\mypack\BankCustomer.java
    C:\jakarta-tomcat\webapps\Assignment1\WEB-INF\classes\mypack\BankCustomer.java:1
    0: invalid method declaration; return type required
            public Bankcustomer(int userid, String username, float balance, int leve
    l){
                   ^
    1 error
      

  6.   

    public void Bankcustomer
    改成:public void BankCustomer
      

  7.   

    错了。构造函数是改成:public BankCustomer(int   userid,   String   username,   float   balance,   int   level )字母B和C都要大写,和你的类同名
      

  8.   

    public class BankCustomer{    private int userid = 1000;
        private String username = "New Customer";
        private float balance = 0;
        private int level = 3;
        
        public void Bankcustomer(int userid, String username, float balance, int level){
            this.userid = userid;
            this.username = username;
            this.balance = balance;
            this.level = level;    
        }
    构造函数名应该和类名一致,java是区分大小写的哦!