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 阅读(358) | 评论 (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 阅读(309) | 评论 (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 阅读(262) | 评论 (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 阅读(280) | 评论 (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 阅读(301) | 评论 (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 阅读(290) | 评论 (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 阅读(234) | 评论 (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 阅读(405) | 评论 (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 阅读(210) | 评论 (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 阅读(351) | 评论 (0)编辑 收藏