-2

Vote4Cash クラスをコマンド クラスとマージしたいと考えています。

私のvote4cashクラスは、プレーヤーがコマンドチェックを入力すると、投票に対して報酬を与えます。そのため、vote4cash プロセスをコマンド クラスに組み込む必要があります。これは私のvote4cashシステムの最も重要な部分です。それらを一緒にマージしたり、一緒に機能させる方法を知っている場合は、その方法を教えてください. インポートを使用してみましたが、うまくいきませんでした。私はコマンド クラスをコーディングしませんでしたが、他の誰かがコーディングしたため、vote4gold プロセスを追加したり、それらを連携させたりすることが難しくなりました。

私の Vote4Cash クラス:

import java.sql.*;
import java.net.*;

public class Vote4Cash {

  public static void main(String args[]) {

  Connection con = null;
  Statement st = null;
  Statement stmt = null;
  ResultSet auth = null;
  ResultSet given = null;

    String url = "jdbc:mysql://localhost:3306/";
    String db = "vote4gold";
    String driver = "com.mysql.jdbc.Driver";
    String user = "root";
    String pass = "";

  try {
  Class.forName(driver);
  con = DriverManager.getConnection(url + db, user, pass);
  con.setAutoCommit(false);
  st = con.createStatement();
  stmt = con.createStatement();

  //String give = "SELECT `given` FROM `has_voted` WHERE `ip` LIKE '+thisIp.getHostAddress()'";
        InetAddress thisIp =InetAddress.getLocalHost();
String give = "SELECT `given` FROM `has_voted` " + 
              "WHERE `ip` = '" + thisIp.getHostAddress() + "'";
  given = st.executeQuery(give);

while (given.next()) {
    if (given.getInt("given") > 0) {
        System.out.println("You've already recieved a reward for the last time you voted, but thanks again for voting.");
    } else {
        System.out.println("Thanks for voting! You've been rewarded 25m gold! Vote again tomorrow!");
        String sql = "SELECT has_voted (given) Replace('0', '0', '1')";
        int rows = stmt.executeUpdate("UPDATE has_voted SET given = 1 WHERE given = 0");
        System.out.println("The given reward column has been set to 1 for the ip address:");
       System.out.println("IP:"+thisIp.getHostAddress());
    }
  }
  } catch (Exception e) {
  System.out.println(e);
  }
  }
}

私のコマンドクラス (ここには収まりません): http://pastebin.com/GXFLfMX4

ありがとう!詳細が必要な場合や、何かわからないことがありましたら、お気軽にお問い合わせください。:)

4

1 に答える 1

1

まず、コードを「マージ」しようとはしません。他の人からコードを受け取ったとき、それは決して解決策であってはなりません。最初に、それがどのように使用されることを意図していたかを理解しようとする必要があります。

そのために...

まず、Commandsクラスは次のように宣言されています。 package server.model.players.packets;

したがって、そのパッケージをインポートする必要があります。Commandsさらに、クラス内のメソッドClientはパラメータとして a を取ります。したがって、このクラスを使用するには、 のインスタンスをインスタンス化できる必要がありますClient

それはどれClientですか?の import ステートメントを見るとCommands、 のように見えますserver.model.players.Client。そのクラスにアクセスし、インスタンスを作成できるようにする必要があります。

Commandsクラスまたは jarのソースまたはコンパイル セットを提供されましたか? 前者の場合、インポートする他のすべてのクラスにアクセスしCommandsてコンパイルする必要があります。

クラスの冗長性と、Commandsそれをブラックボックスのように扱いたいというあなたの願望を見て(それでもクラスとマージしますか?!?(これは実際にはmainメソッドの単なるラッパーです))、あなたは本当に迅速な解決策を探しています。私はもっ​​と小さく始めます。合併したいという衝動を抑えてください。Commandsいくつかの単純なメソッドを使用して、独自のクラスを作成して、設計のクラスを作成してみてください。最終的には、理解できるプロセスと、より良い経験を得ることができます。

于 2012-07-25T03:02:12.873 に答える