march alex's blog
          hello,I am march alex
          posts - 52,comments - 7,trackbacks - 0
          Client端:

          import java.io.DataInputStream;
          import java.io.DataOutputStream;
          import java.io.IOException;
          import java.net.InetAddress;
          import java.net.Socket;
          import java.net.UnknownHostException;
          import java.util.Scanner;

          public class ChatClient {
              
          private static final String SERVER_IP = "127.0.0.1";
              
          private static final int SERVER_PORT = 8888;
              
              Socket socket 
          = null;
              DataOutputStream dos 
          = null;
              DataInputStream dis 
          = null;
              
          private boolean bConnected = false;

              
          private static Scanner in = new Scanner(System.in);
              
          private static String hostInfo = null;

              Thread tRecv 
          = new Thread(new RecvThread());

              
          public static void main(String[] args) {
                  
          new ChatClient().launch();
              }

              
          public void launch() {
                  connect();
                  tRecv.start();
              }

              
          public void connect() {
                  
          try {
                      socket 
          = new Socket(SERVER_IP, SERVER_PORT);
                      dos 
          = new DataOutputStream(socket.getOutputStream());
                      dis 
          = new DataInputStream(socket.getInputStream());
                      bConnected 
          = true;

                      InetAddress addr 
          = InetAddress.getLocalHost();
                      String ip 
          = addr.getHostAddress().toString();// 獲得本機IP
                      String address = addr.getHostName().toString();// 獲得本機名稱
                      hostInfo = ip + "\t" + address + "\tconnected.";
                      System.out.println(hostInfo);
                      dos.writeUTF(hostInfo);
                      dos.flush();
                  } 
          catch (UnknownHostException e) {
                      e.printStackTrace();
                  } 
          catch (IOException e) {
                      e.printStackTrace();
                  }
              }

              
          public void disconnect() throws IOException {
                  
          try {
                      dos.close();
                      dis.close();
                      socket.close();
                  } 
          catch (IOException e) {
                  }
              }

              
          private class RecvThread implements Runnable {
                  
          public void run() {
                      
          while (bConnected) {
                          
          try {
                              
          if (in.hasNext()) {
                                  String talk 
          = in.nextLine();
                                  
          if (talk.equals("quit")) {
                                      disconnect();
                                      bConnected 
          = false;
                                      
          break;
                                  }
                                  dos.writeUTF(talk);
                                  dos.flush();
                              }
                              String talk 
          = dis.readUTF();
                              System.out.println(talk);
                          } 
          catch (IOException e) {
                              e.printStackTrace();
                          }
                      }
                  }
              }
          }
          server端:
          import java.io.DataInputStream;
          import java.io.DataOutputStream;
          import java.io.EOFException;
          import java.io.IOException;
          import java.net.BindException;
          import java.net.ServerSocket;
          import java.net.Socket;
          import java.util.ArrayList;
          import java.util.List;

          public class ChatServer {
              
          boolean started = false;
              ServerSocket ss 
          = null;
              
              List
          <Client> clients = new ArrayList<Client>();
              
              
          public static void main(String[] args) {
                  
          new ChatServer().start();
              }
              
              
          public void start() {
                  
          try {
                      ss 
          = new ServerSocket(8888);
                      started 
          = true;
                  } 
          catch (BindException e) {
                      System.err.println(
          "port in use.please stop program using this port and restart.");
                      System.exit(
          0);
                  } 
          catch (IOException e) {
                      e.printStackTrace();
                  }
                  
                  
          try {
                      
          while(started) {
                          Socket s 
          = ss.accept();
                          Client c 
          = new Client(s);
                          
          // System.out.println("a client connected.");
                          new Thread(c).start();
                          clients.add(c);
                      }
                  } 
          catch (IOException e) {
                      e.printStackTrace();
                  } 
          finally {
                      
          try {
                          ss.close();
                      } 
          catch (IOException e) {
                          e.printStackTrace();
                      }
                  }
                  
              }
              
              
          class Client implements Runnable {
                  
          private Socket s;
                  
          private DataInputStream dis = null;
                  
          private DataOutputStream dos = null;
                  
          private boolean bConnected = false;
                  
                  
          public Client(Socket s) {
                      
          this.s = s;
                      
          try {
                          dis 
          = new DataInputStream(s.getInputStream());
                          dos 
          = new DataOutputStream(s.getOutputStream());
                          bConnected 
          = true;
                      } 
          catch (IOException e) {
                          e.printStackTrace();
                      }
                  }
                  
                  
          public void send(String str) {
                      
          try {
                          dos.writeUTF(str);
                          dos.flush();
                      } 
          catch (IOException e) {
                          clients.remove(
          this);
                          System.out.println(
          "a client quit.");
                          
          //e.printStackTrace();
                      }
                  }
                  
                  
          public void run() {
                      
          try {
                          
          while(bConnected) {
                              String str 
          = dis.readUTF();
                              solveTalk(str);
                          }    
                      } 
          catch (EOFException e) {
                          System.out.println(
          "Client closed!");
                      } 
          catch (IOException e) {
                          e.printStackTrace();
                      } 
          finally {
                          
          try {
                              
          if(dis != null) dis.close();
                              
          if(dos != null) dos.close();
                              
          if(s != null) {
                                  s.close();
                                  s 
          = null;
                              }
                          } 
          catch (IOException e1) {
                              e1.printStackTrace();
                          }
                      }
                  }
                  
                  
          private void solveTalk(String talk) {
                      System.out.println(talk);
                      
          for(int i=0;i<clients.size();i++) {
                          Client c 
          = clients.get(i);
                          c.send(talk);
                      }
                  }
              }
              
          }
          posted @ 2015-08-18 10:03 marchalex 閱讀(365) | 評論 (0)編輯 收藏

          import java.io.BufferedInputStream; 
          import java.io.BufferedReader; 
          import java.io.IOException; 
          import java.io.InputStreamReader; 
          import java.util.regex.Matcher; 
          import java.util.regex.Pattern; 
           
          public class RegexTestHarnessV4 { 
           
              
          public static void main(String[] args) throws IOException { 
                  BufferedReader br 
          = new BufferedReader( 
                          
          new InputStreamReader(new BufferedInputStream(System.in)) 
                      ); 
                  
          while (true) { 
                      System.out.print(
          "\nEnter your regex: "); 
                      Pattern pattern 
          = Pattern.compile(br.readLine()); 
                      System.out.print(
          "Enter input string to search: "); 
                      Matcher matcher 
          = pattern.matcher(br.readLine()); 
                      
          boolean found = false
                      
          while (matcher.find()) { 
                          System.out.println(
          "I found the text \"" + matcher.group() + 
                                  "\" starting at index " + matcher.start() + 
                                  " and ending at index " + matcher.end() + 
                                  
          "."); 
                          found 
          = true
                      } 
                      
          if (!found) { 
                          System.out.println(
          "No match found."); 
                      } 
                  } 
              } 
          }


          樣例:

          Enter your regex: [0-9]+
          Enter input string to search: fdsdffd9090fd
          I found the text "9090" starting at index 7 and ending at index 11.

          Enter your regex: class="fav-num[^"]*"[^>]*>[^<]*
          Enter input string to search: <i class="litb-icon-fav-on"></i><i class="litb-icon-fav-off"></i><span class="fav-num">(151)</span>
          I found the text "class="fav-num">(151)" starting at index 71 and ending at index 92.

          資料:
          http://blog.csdn.net/yaerfeng/article/details/28855587
          posted @ 2015-08-12 13:58 marchalex 閱讀(318) | 評論 (0)編輯 收藏
          import java.io.BufferedReader;
          import java.io.FileNotFoundException;
          import java.io.FileReader;
          import java.io.IOException;
          import java.io.InputStreamReader;
          import java.net.HttpURLConnection;
          import java.net.MalformedURLException;
          import java.net.URL;
          import java.net.URLEncoder;
          import java.util.ArrayList;
          import java.util.List;
          import java.util.Scanner;

          public class GoogleFinderNew {
              
              
          private static String address = "https://www.google.com.hk/search?hl=en&q=";
              
          private static String query = "";
              
          private static String charset = "UTF-8";
              
              
          private static List<String> useragentList = new ArrayList<String>();
              
              
          private static void initUserAgentList(String filename) throws IOException {
                  BufferedReader reader 
          = new BufferedReader(new FileReader(filename));  
                  String line 
          = null;
                  
          while((line = reader.readLine()) != null){
                      useragentList.add(line.trim());
                  }
                  reader.close();
                  
          return;
              }
              
              
          private static List<String> getpages(URL url) throws IOException {
                  HttpURLConnection urlConnection 
          = (HttpURLConnection) url.openConnection();
                  BufferedReader reader 
          = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
                  String line;
                  String ans 
          = "";
                  
          while ((line = reader.readLine()) != null){
                       ans 
          += line + "\n";
                  }
                  
          int st = -1, ed = 0;
                  List
          <String> pagesList = new ArrayList<String>();
                  
                  
          while((st = ans.indexOf("<h3 class=\"r\"><a href=\"", ed)) != -1) {
                      ed = ans.indexOf("\"", st+23);
                      //System.out.println(ans.substring(st+23, ed));
                      pagesList.add(ans.substring(st+23, ed));
                  }
                  
          return pagesList;
              }
              
              
          public static void main(String[] args) throws MalformedURLException, IOException, InterruptedException {
                  
                  Scanner in 
          = new Scanner(System.in);
                  String askurl 
          = in.nextLine();
                  query 
          = in.nextLine();
                  
                  initUserAgentList(
          "D:\\useragent.txt");
                  
                  
          //System.setProperty("http.agent", "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.3.154.9 Safari/525.19");
                  
                  
          int pages = 10;
                  
                  
          for(int i=0;i<pages;i++) {
                      System.out.println((i
          +1+ " ..");
                      
                      
          int index = (int)(useragentList.size()*Math.random());
                      
          if(index == useragentList.size()) index --;
                      String theUserAgent 
          = useragentList.get(index);
                      
                      System.setProperty(
          "http.agent", theUserAgent);
                      
                      String urlString 
          = address + URLEncoder.encode(query, charset);
                      
          if(i != 0) urlString += "&start=" + i + "0";
                      
          //System.out.println(urlString);
                      List<String> list = getpages(new URL(urlString));
                      
          for(String page : list) {
                          
          if(page.contains(askurl)) {
          //                if(page.equals(askurl)) {
                              System.out.println(askurl + " found in the " + (i+1+ " th page.");
                              System.out.println(page);
                              
          return;
                          }
                      }
                      
          int extraTime = 0//(int)(3000 * Math.random());
                      Thread.sleep(1000 + extraTime);
                  }
                  
                  System.out.println(
          "can't find " + askurl + " in the first " + pages + " pages.");
              }
          }
          posted @ 2015-07-29 16:41 marchalex 閱讀(268) | 評論 (0)編輯 收藏
          import java.io.BufferedReader;
          import java.io.IOException;
          import java.io.InputStreamReader;
          import java.io.Reader;
          import java.net.HttpURLConnection;
          import java.net.URL;
          import java.net.URLEncoder;
          import java.util.List;
          import java.util.Scanner;
          import java.util.StringTokenizer;

          import com.google.gson.Gson;



          public class GoogleFinder {
              
              
          public static void main(String[] args) throws IOException, InterruptedException {
                  
                  String address 
          = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=";
                  String query 
          = "";
                  String charset 
          = "UTF-8";
                  
                  Scanner in 
          = new Scanner(System.in);
                  String targeturl 
          = in.nextLine();
                  query 
          = in.nextLine();
                  
                  
          for(int i=0;i<125;i++) {
                      
                      URL url 
          = new URL(address + URLEncoder.encode(query, charset) + "&start=" + i);
                      
                      
          //System.out.println(url);
                      Reader reader = new InputStreamReader(url.openStream(), charset);
                      GoogleResults results 
          = new Gson().fromJson(reader, GoogleResults.class);
                      
                      
          for(int t=0;t<30;t++) {
                          System.out.print(
          ".");
                          Thread.sleep(
          2000);
                      } System.out.println(
          "");
                      
                      
          for(int j=0;j<4;j++) {

                          String ss 
          = results.getResponseData().getResults().get(j).getUrl().toLowerCase();
                          
          if(ss.contains(targeturl)) {
                              System.out.println(ss);
                              System.out.println(results.getResponseData().getResults().get(j).getTitle());
                              System.out.println(
          "Found in the " + (i*4+j+1+ " th");
                              
          return;
                          }
                      }
                      System.out.println(
          "" + ((i+1)*4+ " pages found.");
                  }
                  
                  System.out.println(
          "Can find " + targeturl + " in the first 500 pages");
                  
              }
          }


          class GoogleResults {

              
          private ResponseData responseData;

              
          public ResponseData getResponseData() {
                  
          return responseData;
              }

              
          public void setResponseData(ResponseData responseData) {
                  
          this.responseData = responseData;
              }

              
          public String toString() {
                  
          return "ResponseData[" + responseData + "]";
              }

              
          static class ResponseData {
                  
          private List<Result> results;

                  
          public List<Result> getResults() {
                      
          return results;
                  }

                  
          public void setResults(List<Result> results) {
                      
          this.results = results;
                  }

                  
          public String toString() {
                      
          return "Results[" + results + "]";
                  }
              }

              
          static class Result {
                  
          private String url;
                  
          private String title;

                  
          public String getUrl() {
                      
          return url;
                  }

                  
          public String getTitle() {
                      
          return title;
                  }

                  
          public void setUrl(String url) {
                      
          this.url = url;
                  }

                  
          public void setTitle(String title) {
                      
          this.title = title;
                  }

                  
          public String toString() {
                      
          return "Result[url:" + url + ",title:" + title + "]";
                  }
              }
          }

          posted @ 2015-07-29 14:16 marchalex 閱讀(287) | 評論 (0)編輯 收藏
          import java.io.BufferedReader;
          import java.io.IOException;
          import java.io.InputStreamReader;
          import java.net.HttpURLConnection;
          import java.net.MalformedURLException;
          import java.net.URL;
          import java.net.URLEncoder;
          import java.util.ArrayList;
          import java.util.List;
          import java.util.Scanner;

          public class GoogleFinderNew {
              
              
          private static String address = "https://www.google.com.hk/search?hl=en&q=";
              
          private static String query = "";
              
          private static String charset = "UTF-8";
              
              
          private static void test() {
                  String ans 
          = "abc<h3>helloworld</h3>hehe<h3>nicetomeetyou</h3>";
                  
          int st = ans.indexOf("<h3>");
                  
          int ed = ans.indexOf("</h3>");
                  System.out.println(st 
          + "   " + ed);
                  System.out.println(ans.substring(st
          +4, ed));
              }
              
              
          private static List<String> getpages(URL url) throws IOException {
                  HttpURLConnection urlConnection 
          = (HttpURLConnection) url.openConnection();
                  BufferedReader reader 
          = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
                  String line;
                  String ans 
          = "";
                  
          while ((line = reader.readLine()) != null){
                       ans 
          += line + "\n";
                  }
                  
          int st = -1, ed = 0;
                  List
          <String> pagesList = new ArrayList<String>();
                  
                  
          while((st = ans.indexOf("<h3 class=\"r\"><a href=\"", ed)) != -1) {
                      ed = ans.indexOf("\"", st+23);
                      //System.out.println(ans.substring(st+23, ed));
                      pagesList.add(ans.substring(st+23, ed));
                  }
                  
          return pagesList;
              }
              
              
          public static void main(String[] args) throws MalformedURLException, IOException, InterruptedException {
                  
                  Scanner in 
          = new Scanner(System.in);
                  String askurl 
          = in.nextLine();
                  query 
          = in.nextLine();
                  
                  System.setProperty(
          "http.agent""Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.11 TaoBrowser/2.0 Safari/536.11");
                  
                  
          int pages = 100;
                  
                  
          for(int i=0;i<pages;i++) {
                      System.out.println((i
          +1+ " ..");
                      String urlString 
          = address + URLEncoder.encode(query, charset);
                      
          if(i != 0) urlString += "&start=" + i + "0";
                      
          //System.out.println(urlString);
                      List<String> list = getpages(new URL(urlString));
                      
          for(String page : list) {
                          
          if(page.contains(askurl)) {
          //                if(page.equals(askurl)) {
                              System.out.println(askurl + " found in the " + (i+1+ " th page.");
                              System.out.println(page);
                              
          return;
                          }
                      }
                      Thread.sleep(
          1000);
                  }
                  
                  System.out.println(
          "can't find " + askurl + " in the first " + pages + " pages.");
              }
          }
          posted @ 2015-07-29 14:16 marchalex 閱讀(308) | 評論 (0)編輯 收藏

          圖片放在D:/pic/的p1.png,p2.png,p3.png,臺詞在D盤的lines.txt

          import java.awt.Color;
          import java.awt.Font;
          import java.awt.Graphics;
          import java.io.BufferedReader;
          import java.io.FileReader;
          import java.util.StringTokenizer;

          import javax.swing.ImageIcon;
          import javax.swing.JFrame;
          import javax.swing.JPanel;


          public class GameFrame extends JFrame {
              
              private static final int Width = 1000;
              private static final int Height = 600;
              private static JFrame frame = null;
              private static String content = null;
              
              public GameFrame() throws Exception {
                  frame = new JFrame("");
                  frame.setLocationRelativeTo(null);
                  frame.setSize(Width, Height);
                  frame.setLocation(100, 30);
                  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                  frame.setVisible(true);
                  
                  BufferedReader reader = new BufferedReader(new FileReader("D:\\lines.txt"));
                  while((content=reader.readLine())!=null) {
                      JPanel panel = new GamePanel();
                      panel.setBounds(0, 0, Width, Height);
                      frame.getContentPane().add(panel);
                      frame.setVisible(true);
                      Thread.sleep(1000);
                  }
              }
              
              class GamePanel extends JPanel {
                  public void paint(Graphics g) {
                      super.paint(g);
                      ImageIcon icon = new ImageIcon("D:\\pic\\bg.jpg");
                      g.drawImage(icon.getImage(), 0, 0, Width, Height, this);
                      g.setFont(new Font("", Font.PLAIN, 50));
                      StringTokenizer st = new StringTokenizer(content);
                      String name = st.nextToken();
                      if(name.equals("end")) {
                          g.setColor(Color.WHITE);
                          g.drawString("end", 470, 300);;
                      } else { 
                          if(name.equals("p1")) {
                              icon = new ImageIcon("D:\\pic\\p1.png");
                              g.drawImage(icon.getImage(), 100, 50, 200, 300, this);
                              String words = st.nextToken();
                              g.setColor(Color.CYAN);
                              g.drawString(words, 100, 450);
                          } else if(name.equals("p2")) {
                              icon = new ImageIcon("D:\\pic\\p2.png");
                              g.drawImage(icon.getImage(), 700, 50, 200, 300, this);
                              String words = st.nextToken();
                              g.setColor(Color.PINK);
                              g.drawString(words, 500, 450);
                          } else if(name.equals("p3")) {
                              icon = new ImageIcon("D:\\pic\\p3.png");
                              g.drawImage(icon.getImage(), 450, 50, 200, 300, this);
                              String words = st.nextToken();
                              g.setColor(Color.GREEN);
                              g.drawString(words, 450, 450);
                          }
                      }
                  }
              }
              
              public static void main(String[] args) throws Exception {
                  new GameFrame();
              }
          }
          posted @ 2015-06-08 15:59 marchalex 閱讀(296) | 評論 (0)編輯 收藏
          import java.awt.Color;
          import java.awt.Font;
          import java.awt.Graphics;

          import javax.swing.JFrame;
          import javax.swing.JPanel;


          public class FrameWork extends JFrame {
              
              private static final double pi = Math.acos(-1.0);
              private static final int Width = 1100;
              private static final int Height = 650;
              private static JFrame frame = null;
              private static int the_time = -1095;
              
              public FrameWork() {
                  frame = new JFrame("Frame");
                  frame.setLocationRelativeTo(null);
                  frame.setSize(Width, Height);
                  frame.setLocation(100, 30);
                  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                  frame.setVisible(true);
                  
                  for(int i=0;i<1000;i++) {
                  JPanel panel = new ImagePanel();
                  panel.setBounds(0, 0, Width, Height);
                  frame.getContentPane().add(panel);
                  frame.setVisible(true);
                  the_time +=5;
                  }
              }
              
              class ImagePanel extends JPanel {
                  public void paint(Graphics g) {
                      super.paint(g);
                      g.setColor(Color.WHITE);
                      g.fillRect(0, 0, Width, Height);
                      
                      if(the_time < 0) {
                          g.setColor(Color.BLACK);
                          g.setFont(new Font("MS UI Gothic", Font.PLAIN, 50));
                          g.drawString(""+(-the_time/100), 50, 50);
                      }
                      
                      int[] x = {500, 550, 150, 300, 800, 850, 950, 100};
                      int[] y = {500, 250, 200, 100, 190, 300, 450, 420};
                      g.setColor(Color.GRAY);
                      for(int i=0;i<8;i++)
                          for(int j=i+1;j<8;j++) {
                              g.drawLine(x[i], y[i], x[j], y[j]);
                          }
                      int[][] d = new int[8][8];
                      for(int i=0;i<8;i++)
                          for(int j=0;j<8;j++)
                              d[i][j] = (int)Math.sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
                      int[] start = new int[8];
                      start[0] = 0;
                      for(int i=1;i<=4;i++) start[i] = start[i-1] + d[i-1][i];
                      int d_long = 0;
                      for(int i=1;i<8;i++) if(d[0][i] > d_long) d_long = d[0][i];
                      int end_time = start[4] + d[0][4] + d_long;
                      if(the_time <= 0) g.setColor(Color.YELLOW);
                      else if(the_time > end_time-d_long) g.setColor(Color.RED);
                      else g.setColor(Color.ORANGE);
                      g.fillRect(x[0]-15, y[0]-30, 30, 30);
                      g.setColor(Color.BLACK);
                      g.drawRect(x[0]-15, y[0]-30, 30, 30);
                      if(the_time <= 0) g.setColor(Color.YELLOW);
                      else if(the_time > end_time-d_long) g.setColor(Color.RED);
                      else g.setColor(Color.ORANGE);
                      g.fillOval(x[0]-30, y[0]-20, 60, 40);
                      g.setColor(Color.BLACK);
                      g.drawOval(x[0]-30, y[0]-20, 60, 40);
                      for(int i=1;i<=4;i++) {
                          if(the_time <= start[i]) g.setColor(Color.BLUE);
                          else g.setColor(Color.darkGray);
                          g.fillRect(x[i]-15, y[i]-15, 30, 30);
                          g.setColor(Color.BLACK);
                          g.drawRect(x[i]-15, y[i]-15, 30, 30);
                      }
                      for(int i=5;i<8;i++) {
                          g.setColor(Color.GREEN);
                          g.fillOval(x[i]-15, y[i]-15, 30, 30);
                          g.setColor(Color.BLACK);
                          g.drawOval(x[i]-15, y[i]-15, 30, 30);
                      }
                      for(int i=0;i<5;i++) {
                          if(the_time > start[i]) {
                              int left_time = the_time - start[i];
                              for(int j=0;j<8;j++) {
                                  if(i == j) continue;
                                  if(d[i][j] > left_time) {
                                      int xx = x[i] + (int)((double)(x[j]-x[i])*left_time/(double)d[i][j]);
                                      int yy = y[i] + (int)((double)(y[j]-y[i])*left_time/(double)d[i][j]);
                                      g.setColor(Color.CYAN);
                                      g.fillOval(xx-5, yy-5, 10, 10);
                                  }
                              }
                          }
                      }
                      if(the_time>end_time-d_long) {
                          for(int i=1;i<8;i++) {
                              int left_time = the_time - end_time + d_long;
                              if(left_time > d[0][i]) {
                                  if(i>4) {
                                      g.setColor(Color.RED);
                                      g.fillOval(x[i]-15, y[i]-15, 30, 30);
                                      g.setColor(Color.BLACK);
                                      g.drawOval(x[i]-15, y[i]-15, 30, 30);
                                  } else {
                                      g.setColor(Color.RED);
                                      g.fillRect(x[i]-15, y[i]-15, 30, 30);
                                      g.setColor(Color.BLACK);
                                      g.drawRect(x[i]-15, y[i]-15, 30, 30);
                                  }
                              } else {
                                  int xx = x[0] + (int)((double)(x[i]-x[0])*left_time/(double)d[0][i]);
                                  int yy = y[0] + (int)((double)(y[i]-y[0])*left_time/(double)d[0][i]);
                                  g.setColor(Color.RED);
                                  g.fillOval(xx-5, yy-5, 10, 10);
                              }
                          }
                      }
                      g.setColor(Color.WHITE);
                      g.setFont(new Font("MS UI Gothic", Font.PLAIN, 30));
                      for(int i=1;i<=4;i++) {
                          g.drawString(""+i, x[i]-7, y[i]+7);
                      }
                  }
              }
              
              public static void main(String[] args) {
                  new FrameWork();
              }
          }
          posted @ 2015-06-08 01:55 marchalex 閱讀(241) | 評論 (0)編輯 收藏
          運行此程序需要添加一個jar包下載地址
          import java.io.BufferedReader;
          import java.io.File;
          import java.io.FileReader;
          import java.util.StringTokenizer;

          import jxl.Workbook;
          import jxl.write.Label;
          import jxl.write.WritableSheet;
          import jxl.write.WritableWorkbook;


          public class FileToExcel {
              
              public static void main(String[] args) throws Exception {
                  writeToExcel("D:\\output.txt", "D:\\output.xls");
                  System.out.println("finished!");
              }
              
              public static void writeToExcel(String inFile, String outExcel) throws Exception {
                  
                  
                  //打開文件   
                  WritableWorkbook book= Workbook.createWorkbook(new File(outExcel));   
                  //生成名為“第一頁”的工作表,參數0表示這是第一頁   
                  WritableSheet sheet=book.createSheet("第一頁",0);   
                  //在Label對象的構造子中指名單元格位置是第一列第一行(0,0)   
                  
          //以及單元格內容為test   
                  
          //Label label=new Label(0,0,"測試");   
                  
          //將定義好的單元格添加到工作表中   
                  
          //sheet.addCell(label);    
                  
          //jxl.write.Number number = new jxl.write.Number(1,0,789.123);   
                  
          //sheet.addCell(number);   
                  
          //jxl.write.Label s=new jxl.write.Label(1, 2, "三十三");  
                  
          //sheet.addCell(s);   
                  
          //寫入數據并關閉文件 
                  
                  Label label = null;
                  
                  String s1 = readFile(inFile);
                  
                  StringTokenizer st1 = new StringTokenizer(s1, "\n");
                  for(int i=0;st1.hasMoreElements();i++) {
                      String s2 = st1.nextToken();
                      StringTokenizer st2 = new StringTokenizer(s2, " \t");
                      for(int j=0;st2.hasMoreElements();j++) {
                          String s = st2.nextToken();
                          label=new Label(j,i, "" + s);
                          sheet.addCell(label);  
                      }
                  }
                  
                  
                  book.write();   
                  book.close(); //最好在finally中關閉,此處僅作為示例不太規范  
                  
              }
              
              private static String readFile(String filename) throws Exception {
                  BufferedReader reader = new BufferedReader(new FileReader(filename));
                  String ans = "", line = null;
                  while ((line = reader.readLine()) != null) {
                      ans += line + "\r\n";
                  }
                  reader.close();
                  return ans;
              }
              
          }
          posted @ 2015-04-15 22:11 marchalex 閱讀(414) | 評論 (0)編輯 收藏
          運行此程序需要添加一個jar包下載地址
          import java.io.BufferedInputStream;
          import java.io.BufferedReader;
          import java.io.BufferedWriter;
          import java.io.File;
          import java.io.FileInputStream;
          import java.io.FileNotFoundException;
          import java.io.FileReader;
          import java.io.FileWriter;
          import java.io.IOException;
          import java.text.DecimalFormat;
          import java.text.SimpleDateFormat;
          import java.util.ArrayList;
          import java.util.Arrays;
          import java.util.Date;
          import java.util.List;



          import java.util.StringTokenizer;
           






          import org.apache.poi.hssf.usermodel.HSSFCell;
          import org.apache.poi.hssf.usermodel.HSSFDateUtil;
          import org.apache.poi.hssf.usermodel.HSSFRow;
          import org.apache.poi.hssf.usermodel.HSSFSheet;
          import org.apache.poi.hssf.usermodel.HSSFWorkbook;
          import org.apache.poi.poifs.filesystem.POIFSFileSystem;

           

          public class ExcelToFile {
              public static void main(String[] args) throws Exception {
                  solve("D:\\input.xls", "D:\\output.txt");
                  System.out.println("finished!");
              }
              
              private static String readFile(String filename) throws Exception {
                  BufferedReader reader = new BufferedReader(new FileReader(filename));
                  String ans = "", line = null;
                  while ((line = reader.readLine()) != null) {
                      ans += line + "\r\n";
                  }
                  reader.close();
                  return ans;
              }
              
              private static void writeFile(String content, String filename)
                      throws Exception {
                  BufferedWriter writer = new BufferedWriter(new FileWriter(filename));
                  writer.write(content);
                  writer.flush();
                  writer.close();
              }

              private static void solve(String xls_name, String outfile) throws Exception {

                  String ans = "";
                  File file = new File(xls_name);
                  String[][] result = getData(file, 2);
                  int rowLength = result.length;

                  for(int i=0;i<rowLength;i++) {   
                     for(int j=0;j<result[i].length;j++) {
                        ans += result[i][j]+" ";
                     }
                     ans += "\r\n";
                  }
                  writeFile(ans, outfile);
              }

              /**
               * 讀取Excel的內容,第一維數組存儲的是一行中格列的值,二維數組存儲的是多少個行
               * 
          @param file 讀取數據的源Excel
               * 
          @param ignoreRows 讀取數據忽略的行數,比喻行頭不需要讀入 忽略的行數為1
               * 
          @return 讀出的Excel中數據的內容
               * 
          @throws FileNotFoundException
               * 
          @throws IOException
               
          */

              public static String[][] getData(File file, int ignoreRows)
                     throws FileNotFoundException, IOException {
                 List<String[]> result = new ArrayList<String[]>();
                 int rowSize = 0;
                 BufferedInputStream in = new BufferedInputStream(new FileInputStream(
                        file));
                 // 打開HSSFWorkbook
                 POIFSFileSystem fs = new POIFSFileSystem(in);
                 HSSFWorkbook wb = new HSSFWorkbook(fs);
                 HSSFCell cell = null;
                 for (int sheetIndex = 0; sheetIndex < wb.getNumberOfSheets(); sheetIndex++) {
                     HSSFSheet st = wb.getSheetAt(sheetIndex);
                     // 第一行為標題,不取
                     for (int rowIndex = ignoreRows; rowIndex <= st.getLastRowNum(); rowIndex++) {
                        HSSFRow row = st.getRow(rowIndex);
                        if (row == null) {
                            continue;
                        }
                        int tempRowSize = row.getLastCellNum() + 1;
                        if (tempRowSize > rowSize) {
                            rowSize = tempRowSize;
                        }
                        String[] values = new String[rowSize];
                        Arrays.fill(values, "");
                        boolean hasValue = false;
                        for (short columnIndex = 0; columnIndex <= row.getLastCellNum(); columnIndex++) {
                            String value = "";
                            cell = row.getCell(columnIndex);
                            if (cell != null) {
                               // 注意:一定要設成這個,否則可能會出現亂碼
                               cell.setEncoding(HSSFCell.ENCODING_UTF_16);
                               switch (cell.getCellType()) {
                               case HSSFCell.CELL_TYPE_STRING:
                                   value = cell.getStringCellValue();
                                   break;
                               case HSSFCell.CELL_TYPE_NUMERIC:
                                   value = String.format("%.2f", cell.getNumericCellValue());
                                   if (HSSFDateUtil.isCellDateFormatted(cell)) {
                                       Date date = cell.getDateCellValue();
                                       if (date != null) {
                                           value = new SimpleDateFormat("yyyy-MM-dd")
                                                 .format(date);
                                      } else {
                                          value = "";
                                      }
                                   } else {
                                      value = new DecimalFormat("0").format(cell
                                             .getNumericCellValue());
                                   }
                                   break;
                               case HSSFCell.CELL_TYPE_FORMULA:
                                   // 導入時如果為公式生成的數據則無值
                                   if (!cell.getStringCellValue().equals("")) {
                                      value = cell.getStringCellValue();
                                   } else {
                                      value = cell.getNumericCellValue() + "";
                                   }
                                   break;
                               case HSSFCell.CELL_TYPE_BLANK:
                                   break;
                               case HSSFCell.CELL_TYPE_ERROR:
                                   value = "";
                                   break;
                               case HSSFCell.CELL_TYPE_BOOLEAN:
                                   value = (cell.getBooleanCellValue() == true ? "Y"
                                          : "N");
                                   break;
                               default:
                                   value = "";
                               }
                            }
                            if (columnIndex == 0 && value.trim().equals("")) {
                               break;
                            }
                            values[columnIndex] = value.trim();
                            hasValue = true;
                        }
                        if (hasValue) {
                            result.add(values);
                        }
                     }
                 }
                 in.close();
                 String[][] returnArray = new String[result.size()][rowSize];
                 for (int i = 0; i < returnArray.length; i++) {
                     returnArray[i] = (String[]) result.get(i);
                 }
                 return returnArray;
              }

          }
          posted @ 2015-04-15 21:57 marchalex 閱讀(218) | 評論 (0)編輯 收藏
          RandomRectangles類中的X、Y和n分別代表生成舉行的橫坐標范圍、縱坐標范圍和個數。
          FrameWork類用于演示。

          RandomRectangle.java

          public class RandomRectangles {
              private static final int maxn = 1010;
              private static double[] x = new double[maxn];
              private static double[] y = new double[maxn];
              private static double[] w = new double[maxn];
              private static double[] h =new double[maxn];
              private static double[] xmax = new double[maxn];
              private static double[] ymax = new double[maxn];
              private static double[] xx = new double[maxn];
              private static double[] yy = new double[maxn];
              private static double X = 1000;
              private static double Y = 600;
              private static int n = 2;
              private static double[][] ans = new double[n][4];
              private static int cmp(int i, int j) {
                  if(y[i] < y[j] || y[i] == y[j] && x[i] < x[j]) return -1;
                  return 1;
              }
              private static void sort(int l, int r) {
                  if(l == r) return;
                  int mid = (l + r) >> 1;
                  sort(l, mid);
                  sort(mid+1, r);
                  int i = l, j = mid + 1, k = l;
                  while(i <= mid || j <= r) {
                      if(i > mid) {
                          xx[k] = x[j];
                          yy[k++] = y[j++];
                      }
                      else if(j > r) {
                          xx[k] = x[i];
                          yy[k++] = y[i++];
                      }
                      else if(cmp(i,j) == -1) {
                          xx[k] = x[i];
                          yy[k++] = y[i++];
                      }
                      else {
                          xx[k] = x[j];
                          yy[k++] = y[j++];
                      }
                  }
                  for(i=l;i<=r;i++) {
                      x[i] = xx[i];
                      y[i] = yy[i];
                  }
                  return;
              }
              private static boolean create_points() {
                  for(int i=0;i<n;i++) {
                      xmax[i] = X;
                      ymax[i] = Y;
                      x[i] = Math.random() * X;
                      y[i] = Math.random() * Y;
                  }
                  sort(0, n-1);
                  for(int i=0;i<n-1;i++) {
                      if(y[i] == y[i+1] && x[i] == x[i+1]) return false;
                  }
                  return true;
              }
              public static double[][] getData() {
                  while(true) {
                      if(create_points() == truebreak;
                  }
                  for(int i=0;i<n-1;i++) {
                      if(y[i] == y[i+1]) xmax[i] = x[i];
                  }
                  for(int i=0;i<n;i++) {
                      w[i] = Math.random() * (xmax[i] - x[i]);
                      for(int j=i+1;j<n;j++) {
                          if(x[j] >= x[i] && x[j] <= x[i]+w[i]) {
                              ymax[i] = y[j];
                              break;
                          }
                      }
                      h[i] = Math.random() * (ymax[i] - y[i]);
                      for(int j=i+1;j<n;j++) {
                          if(x[j] < x[i] && y[j] >= y[i] && y[j] <= y[i]+h[i]) {
                              xmax[j] = xmax[j] < x[j] ? xmax[j] : x[j];
                          }
                      }
                  }
                  for(int i=0;i<n;i++) {
                      ans[i][0] = x[i];
                      ans[i][1] = y[i];
                      ans[i][2] = w[i];
                      ans[i][3] = h[i];
                  }
                  return ans;
              }
              public static void main(String[] args) {
                  ans = getData();
                  System.out.println(ans[2][2]);
              }
          }

          FrameWork.java
          import java.awt.Color; import java.awt.FlowLayout;
          import java.awt.Graphics;
          import java.awt.Graphics2D;
          import java.awt.event.ActionEvent;
          import java.awt.event.ActionListener;
          import java.awt.image.BufferedImage;
          import java.io.BufferedReader;
          import java.io.File;
          import java.io.FileNotFoundException;
          import java.io.FileReader;
          import java.io.IOException;

          import javax.imageio.ImageIO;
          import javax.swing.ImageIcon;
          import javax.swing.JFileChooser;
          import javax.swing.JFrame;
          import javax.swing.JLabel;
          import javax.swing.JList;
          import javax.swing.JMenu;
          import javax.swing.JMenuBar;
          import javax.swing.JMenuItem;
          import javax.swing.JPanel;


          public class FrameWork extends JFrame {
              
              private static final double pi = Math.acos(-1.0);
              private static final int Width = 1200;
              private static final int Height = 800;
              private static JFrame frame = null;
              
              
              public FrameWork() {
                   setDefaultCloseOperation(EXIT_ON_CLOSE);
                   setLocationRelativeTo(null);
                   setSize(Width, Height);
                   setResizable(false);
                   getContentPane().setLayout(null);
                   JPanel panel = new ImagePanel();
                   panel.setBounds(0, 0, Width, Height);
                   getContentPane().add(panel);
                   setVisible(true);
              }
              
              class ImagePanel extends JPanel {
                  public void paint(Graphics g) {
                      super.paint(g);
                      g.setColor(Color.white);
                      g.fillRect(0, 0, Width, Height);
                      g.setColor(Color.black);
                      double[][] ans = RandomRectangles.getData();
                      for(int i=0;i<ans.length;i++) {
                          double x0 = ans[i][0];
                          double y0 = ans[i][1];
                          double x1 = x0 + ans[i][2];
                          double y1 = y0 + ans[i][3];
                          System.out.println(x0 + " " + y0 + " " + x1 + " " + y1);
                      }
                      for(int i=0;i<ans.length;i++)
                          g.drawRect((int)ans[i][0], (int)ans[i][1], (int)ans[i][2], (int)ans[i][3]);
                  }
              }
              
              public static void main(String[] args) {
                  new FrameWork();
              }
          }
          posted @ 2015-04-15 20:27 marchalex 閱讀(369) | 評論 (0)編輯 收藏
          僅列出標題  下一頁
          主站蜘蛛池模板: 临泽县| 五华县| 宁强县| 漾濞| 措勤县| 陵川县| 余江县| 清丰县| 德昌县| 高台县| 常宁市| 丹棱县| 墨脱县| 东乡县| 丰城市| 锡林郭勒盟| 麟游县| 长岛县| 读书| 瓮安县| 丰城市| 越西县| 托克托县| 泽州县| 南昌县| 祥云县| 阜宁县| 乌鲁木齐市| 泽库县| 文化| 额尔古纳市| 河池市| 蒲城县| 宜兰市| 灯塔市| 洞头县| 济源市| 砚山县| 滦平县| 襄垣县| 黔南|