0

IRCボットを作成しようとしています。以下はコードですが、実行すると「001」が検出されません。JRE6で実行し、JDK6を使用しています。Eclipseで開発し、デバッグ機能を使用して実行しています。「java.exe」と「javaw.exe」の両方で試しました。実行中、debugexは001が明らかにそこにあることを示しています。

これが私のコードです:

package bot;
import java.io.*;
import java.net.*;
public class Main {
    static PrintWriter out = null;
    @SuppressWarnings("unused")
    public static void main(String[] args) {
        Socket sock = null;
        BufferedReader in = null;
        try {
            sock = new Socket("irc.jermc.co.cc",6667);
            in = new BufferedReader(new InputStreamReader(sock.getInputStream()));
            out = new PrintWriter(sock.getOutputStream(), true);
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        boolean sentconnect = false;
        while(sock.isConnected() == true){
            if(sentconnect == false){
                writeout("NICK GBot");
                writeout("USER GBot GBot GBot :GBot");
                sentconnect = true;
            }
            String data = "";
            try {
                data = in.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            data = data.trim();
            if(data != ""){
                System.out.println("[IN] " + data);
            }
            String[] ex;
            ex = data.split(" ");
            for(String debugex : ex){
                //System.out.println("DEBUGEX: " + debugex);
            }
            if(ex[1] == "001"){
                writeout("JOIN #minecraft");
            }
            try {
                Thread.sleep((long) 0.5);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            if(ex[0] == "PING"){
                writeout("PONG " + ex[1]);
            }
        }
    }

    private static void writeout(String msg) {
        out.println(msg);
        System.out.println("[OUT] " + msg);
    }
}
4

1 に答える 1

2

String.equals()文字列の等価性は、 ではなくを使用してテストする必要があります==

そのはず:

        if(! data.isEmpty()){                     // rather than: data != ""
            System.out.println("[IN] " + data);
        }
        ...
        if(ex[1].equals("001")){                  // rather than: ex[1] == "001"
            writeout("JOIN #minecraft");
        }
        ...
        if(ex[0].equals("PING")){                 // rather than: ex[0] == "PING"
            writeout("PONG " + ex[1]);
        }

Java で文字列を比較する方法を参照してください。

于 2012-05-17T22:41:34.793 に答える