2013-02-27 87 views
-1

我目前正在練習java,而我不確定是什麼導致我的一種方法的語法錯誤。我提供了有錯誤的地方的評論。我嘗試了一切,但沒有成功。任何人都可以告訴我我的錯在哪裏,這段代碼?

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

import Products.Items; 

public class ItemProcess{ 
    private static ArrayList<Items> itemList = new ArrayList<Items>(); 
    ServerSocket serverSocket = null; 
    final int PORT = 1234; 
    Socket client; 
    ClientHandler handler; 

    public static void main(String[] args) throws IOException { 

     Items[] item = { new Items(123, "ABCDEE fghikop"), 
       new Items(180, "hgiuhygihuvg KHJMLOP"), }; 
     for (int i = 0; i < item.length; i++) 
      itemList.add(item[i]); 
     Calendar start = Calendar.getInstance(); 
     int date = start.get(Calendar.DATE); 
     int month = start.get(Calendar.MONTH); 
     int year = start.get(Calendar.YEAR); 

     Scanner input = new Scanner(System.in); 

     System.out.print("Enter finishing time in 24-hr format "); 
     System.out.print("(e.g. 17:52) : "); 
     String timeString = input.nextLine(); 


     String hourString = timeString.substring(0,2); 
     int hour = Integer.parseInt(hourString); 


     String minString = timeString.substring(3,5); 
     int minute = Integer.parseInt(minString); 


     Calendar deadline = Calendar.getInstance(); 

     deadline.set(year,month,date,hour,minute,0); 


     System.out.println("\n\nDeadline: " 
          + getDateTime(deadline) + "\n"); 


     Calendar now = Calendar.getInstance(); 

     while(now.before(deadline)) 
     { 
      System.out.println(getDateTime(now)); 

      try 
      { 
       Thread.sleep(2000); 
      } 
      catch (InterruptedException intEx) 
      { 

      } 


      now = Calendar.getInstance(); 
     } 
     System.out.println("\n\nDeadline reached!!!\n"); 
    } 

    public static String getDateTime(Calendar dateTime) 
    {  


     String hour2Digits = 
       String.format("%02d", 
         dateTime.get(Calendar.HOUR_OF_DAY)); 
     String min2Digits = 
       String.format("%02d", 
          dateTime.get(Calendar.MINUTE)); 

     return(dateTime.get(Calendar.DATE) + "/" 
       + (dateTime.get(Calendar.MONTH)+1) + "/" 
       + dateTime.get(Calendar.YEAR) + " " 
       + hour2Digits + ":" + min2Digits); 
    } //I am getting the syntax error on here which reads like this "Syntax error on token "}",{ expected after this token 



     try 
     { 
      serverSocket = new ServerSocket(PORT); 
     } 
     catch (IOException ioEx) 
     { 
      System.out.println("\nUnable to set up port!"); 
      System.exit(1); 
     } 


     System.out.println("\nServer running...\n"); 

     do 
     { 
      client = serverSocket.accept(); 
      //Wait for client. 
      System.out.println("\nNew client accepted.\n"); 
      handler = new ClientHandler(client); 
      handler.start(); 
     }while (true); 
    } 


class ClientHandler extends Thread 
{ 
    private Socket client; 
    private Scanner input; 
    private PrintWriter output; 

    public ClientHandler(Socket socket) throws IOException 
    { 
     client = socket; 

     input = new Scanner(client.getInputStream()); 
     output = new PrintWriter(
         client.getOutputStream(),true); 
    } 

    public void run() 
    { 
     String received; 

     do 
     { 
      received = input.nextLine(); 
      output.println("ECHO: " + received); 
     }while (!received.equals("QUIT")); 

     try 
     { 
      System.out.println("Closing down connection..."); 
      client.close(); 
     } 
     catch(IOException ioEx) 
     { 
      System.out.println("* Disconnection problem! *"); 
     } 
    } 
} 
} 
+0

什麼錯誤信息,你得到什麼? – 2013-02-27 17:13:11

+0

} //我在這裏得到的語法錯誤是這樣的:「令牌上的語法錯誤」}「,{在我的一個方法之後,在此令牌 之後預期 – Sky 2013-02-27 17:14:18

回答

0

你有一個錯位的嘗試抓住超出任何方法。我不確定你的意思。在getDateTime方法之後。

0

getDateTime()方法之後的代碼應該在方法塊之內,目前它不在任何方法內。將其放置在適當的方法塊中。

public void someMethod() { 
    try 
    { 
     serverSocket = new ServerSocket(PORT); 
    // rest of your code 
2

您應該正確縮進代碼,它會幫助您找到這種類型的錯誤。此代碼是不是方法,這是Java不允許內部:

try 
    { 
     serverSocket = new ServerSocket(PORT); 
    } 
    catch (IOException ioEx) 
    { 
     System.out.println("\nUnable to set up port!"); 
     System.exit(1); 
    } 


    System.out.println("\nServer running...\n"); 

    do 
    { 
     client = serverSocket.accept(); 
     //Wait for client. 
     System.out.println("\nNew client accepted.\n"); 
     handler = new ClientHandler(client); 
     handler.start(); 
    }while (true); 
0

}結束你的getDateTime方法,之後你有被困一堆代碼(如下),它需要在一個塊被封裝莫名其妙。

try 
    { 
     serverSocket = new ServerSocket(PORT); 
    } 
    catch (IOException ioEx) 
    { 
     System.out.println("\nUnable to set up port!"); 
     System.exit(1); 
    } 


    System.out.println("\nServer running...\n"); 

    do 
    { 
     client = serverSocket.accept(); 
     //Wait for client. 
     System.out.println("\nNew client accepted.\n"); 
     handler = new ClientHandler(client); 
     handler.start(); 
    } while (true); 
0

這是什麼?我相信,你的評論之後開始的代碼不在任何函數中。這不可能。你應該把它放在任何函數中。

此外,您還可以使用的SimpleDateFormat你的日期字符串轉換成指定的格式,例如:

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); 
String date = sdf.format(new Date()); 
相關問題