这段代码出了什么问题?

时间:2010-02-18 20:49:48

标签: java

我今天刚开始尝试使用java(有javascript和PHP经验),但编译代码时遇到了问题。

我在Mac上使用NewBeans IDE 6.8。

它只是说“一个或多个项目编译时出错。”

当我尝试添加自定义函数时问题就开始了。

这是代码(忽略所有评论):

import java.io.*;
import java.net.*;

public class simpleServer
{
    public static void main(String args[])
    {
    }

    public void clientLoop()
    {
        // Message terminator
        char EOF = (char)0x00;

        try
        {
            // create a serverSocket connection on port 9999
            ServerSocket s = new ServerSocket(4041);

            System.out.println("Server started. Listening for connections...");
            // wait for incoming connections
            Socket incoming = s.accept();

            BufferedReader data_in = new BufferedReader(
                    new InputStreamReader(incoming.getInputStream()));
            PrintWriter data_out = new PrintWriter(incoming.getOutputStream());

            data_out.println("Connected to Shipz Server." + EOF);
            data_out.flush();

            boolean quit = false;


            while (!quit)
            {
                String msg = data_in.readLine();

                if (msg == null) quit = true;

                if (!msg.trim().equals("EXIT"))
                {
                    if(msg.trim().equals("hShipzClient"))
                    {
                        System.out.println("Client Connected");
                    }

                    if(msg.trim().equals("c")){
                        System.out.println("Player collision");
                        data_out.println("You crashed!");
                    }
                    data_out.flush();
                }
                else
                {
                    quit = true;
                }
            }
        }
        catch (Exception e)
        {
            System.out.println("Connection lost");
        }
    }

由于

3 个答案:

答案 0 :(得分:3)

我认为你在节目的最后部分缺少一个结束的大括号“}”。

答案 1 :(得分:3)

1)您粘贴的代码缺少右括号 2)一旦取消注释main方法中的行,你就会注意到你不能从静态方法i./e中调用实例方法clientLoop()。 main()中。
2.1)您需要创建类的实例,然后针对实例调用clientLoop() 2.2)但在你这样做之前,我们通常用java中的大写字母命名我们的类,参见http://java.sun.com/docs/codeconv/html/CodeConventions.doc8.html
2.3)为了便于阅读,您还应该尝试对齐大括号 3)哪个应该给你这样的东西:

 public static void main(String args[]) {
    SimpleServer ss = new SimpleServer();
    while (true) {

       ss.clientLoop();
    }

 }

答案 2 :(得分:1)

代码编译得很好。如上所述,您在此处发布的内容中缺少最后一个大括号。此外,传统上用驼峰式命名类,首字母大写。