[Java] 使用java模擬ping和telnet的實現

今天在寫 Java 的時候,遇到問題跑去問 TonyQ 兄,他丟了一個網址給我,剛剛測試過了,還漫好用的,紀錄一下 模擬 ping 的實現

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

public class PseudoPing {
  public static void main(String args[]) {
        try {

            InetAddress address = InetAddress.getByName(args[0]);
            System.out.println(address.isReachable(5000));
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
  }
}
[Read More]

[Ubuntu & java] java JDBC and MySQL

最近開始要摸 java 了,目前大概先實做 java with JDBC 連接 MySQL,所以在 JavaWorld@TW 這裡找了一些相關的文件,目前我在 Linux 底下實做,還沒找到一套很適合的 IDE Tool 來撰寫程式碼,大家好像都很推 netbeanseclipse,不過我目前還是使用 PSPad 來撰寫 java 程式碼,然後透過 FTP 的方式編輯,這不是重點,重點是要透過 jdbc 來連接 MySQL,目前是在 Ubuntu 7.04 這一版本上面實做,底下是實做方法: 1. 首先先安裝 deb 檔案:透過 apt-get 的方式

#
# 首先尋找 java lib with mysql
apt-get install libmysql-java
2. 安裝好之後尋找 jar 檔案,加入到 class path 裡面
#
# 首先 echo $CLASSPAT
#
# java mysql jar 檔案如下
/usr/share/java/mysql.jar
# 加入 CLASSPATH,修改 /etc/bash.bashrc
export CLASSPATH=$CLASSPATH:/usr/share/java/mysql.jar
# 然後在
source /etc/bash.bashrc
[Read More]

[Java] 正規取代表示法

最近弄國科會計畫,所以都在碰 java 的東西,都在弄 sparqlrdf 的東西,昨天弄懂一些基本的 sparql,然而利用 sarql 語法取出來的數值不是我想要的,所以利用正規表示,把字串取代了。 我想取代的字串如下:

( ?url = “LAB221″^^xsd:string ) 我只想要中間的 LAB221 的部份,然後我上網找了方法,總共可以使用兩種方法 第一種

String result = "( ?url = \"LAB221\"^^xsd:string )";
// compile pattern
Pattern p = Pattern.compile("[^\"]+\"([^\"]+)\"[^\"]+");

// get matcher
Matcher m = p.matcher(result.replaceAll("[

  • ]","")); // test if match if (m.matches()) { System.out.println(m.group(1)); } else { System.out.println("error"); } /* 正規比對 */
    上面感謝 ptt qrtt1 給我的一點啟示 [Read More]

    [Java] 判斷字串是否是整數

    有時候必須知道輸入的字串是否是整數,如果不是的話,就要重新輸入,這有兩種作法 第一種是使用 try … catch … finally 的方法,如下

    public class test
    { 
    	public static void main(String args[])
      {
        BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); 
        try{
          System.out.print("請輸入你要的數字:");
          int test = Integer.parseInt(buf.readLine()); 
        }
        catch(ArrayIndexOutOfBoundsException e)
        {
          System.out.println(e.toString() + "陣列程式發生錯誤");  
        }
        catch(ArithmeticException e)
        {
          System.out.println(e.toString() + "數學發生錯誤");  
        }
        catch(Exception e)
        {
          System.out.println(e.toString() + "程式發生錯誤");
        }
        finally
        {
          System.out.println("執行成功");  
        }
    	
      }
    }
    
    另外一種方法,是利用 while 然後利用 Character.isDigit 的方法
    public class test2
    { 
    	public static void main(String args[])
      {
        BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
        String price;
        boolean num = false;
        try{
          while(!num)
          {
            System.out.print("請輸入你要的數字:");
            price = buf.readLine();
            char[] price_array = price.toCharArray();
            for(int index=0; index < price.length(); index++) 
            {
              if(!Character.isDigit(price_array[index])) 
              {
                System.out.println("您不是輸入數字");
                break;
              }
              else
              {
                System.out.println("您輸入正確的數字了");
                num =true;
              }
            }
          }    
        }
        catch(Exception e)
        {
          System.out.println(e.toString() + "程式發生錯誤");
        }    
      }
    }
    [/code]
    PTT 的 java 版的 TonyQ 提供另一種寫法
    
    
    
    
    public class test3
    { 
    	public static void main(String args[])
      {
        try
        {
          BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
          System.out.print("請輸入數字:");
          String inputStr = input.readLine();
    
          while (inputStr == null || !inputStr.matches("[0-9]+"))
          {
              System.out.print("輸入錯誤,請重新輸入數字:");
              inputStr = input.readLine();
          }
    
          int num=Integer.parseInt(inputStr);
    
          System.out.println("輸入的數字是:"+num);
        }
        catch (IOException e) //for readLine()
        {
            e.printStackTrace();
        }
      }
    }
    
    然後在 javaworld 版,看到有人介紹 String與基本資料型態(int byte...等)之間的轉換 如下

    轉錄自java連線版 發信人: TAHO, 看板: java 精華區 標 題: String與基本資料型態(int byte…等)之間的轉換 發信站: 140.126.22.6 竹師風之坊 Origin: Local 1. 由 基本資料型態轉換成 String String 類別中已經提供了將基本資料型態轉換成 String 的 static 方法 也就是 String.valueOf() 這個參數多載的方法 有下列幾種 String.valueOf(boolean b) : 將 boolean 變數 b 轉換成字串 String.valueOf(char c) : 將 char 變數 c 轉換成字串 String.valueOf(char[] data) : 將 char 陣列 data 轉換成字串 String.valueOf(char[] data, int offset, int count) : 將 char 陣列 data 中 由 data[offset] 開始取 count 個元素 轉換成字串 String.valueOf(double d) : 將 double 變數 d 轉換成字串 String.valueOf(float f) : 將 float 變數 f 轉換成字串 String.valueOf(int i) : 將 int 變數 i 轉換成字串 String.valueOf(long l) : 將 long 變數 l 轉換成字串 String.valueOf(Object obj) : 將 obj 物件轉換成 字串, 等於 obj.toString() 用法如: int i = 10; String str = String.valueOf(i); 這時候 str 就會是 “10” 2. 由 String 轉換成 數字的基本資料型態 要將 String 轉換成基本資料型態轉 大多需要使用基本資料型態的包裝類別 比如說 String 轉換成 byte 可以使用 Byte.parseByte(String s) 這一類的方法如果無法將 s 分析 則會丟出 NumberFormatException byte : Byte.parseByte(String s) : 將 s 轉換成 byte Byte.parseByte(String s, int radix) : 以 radix 為基底 將 s 轉換為 byte 比如說 Byte.parseByte(“11”, 16) 會得到 17 double : Double.parseDouble(String s) : 將 s 轉換成 double float : Double.parseFloat(String s) : 將 s 轉換成 float int : Integer.parseInt(String s) : 將 s 轉換成 int long : Long.parseLong(String s) : 將 s 轉換成 long 用法如:

    [Read More]

    [java] 在 linux 底下使用 java 來執行 Linux 指令

    其實可以在 linux 底下去寫 shell script 然後去執行 java 程式,而並非用 java 去執行 Linux 指令,不過java也是可以做到執行 shell command,底下就是我寫的 java 測試 code,去列出自己所在的目錄底下的檔案 ls 這個指令

    import java.io.*;
    import java.net.*;
    import java.util.*;
    
    public class runstart{
            public static void main(String a[]) throws Exception{
                    Process pl = Runtime.getRuntime().exec("/bin/ls");
                    String line = "";
                    BufferedReader p_in = new BufferedReader(new InputStreamReader(pl.getInputStream()));
                    while((line = p_in.readLine()) != null){
                            System.out.println(line);
                    }
                    p_in.close();
            }
    }
    
    參考

    http://debut.cis.nctu.edu.tw/~ching/Course/JavaCourse/05_input_output/02_input_output.htm

    [Java] 安裝好 Jdk 設定 path 跟 classpath 路徑

    今天剛裝好 jdk 新版 jdk1.6.0_04,如要下載請到 這裡 下載,裝好之後當然底下要找編譯檔案,就是要去 bin 這個資料夾,然後找到 javac 跟 java 執行檔就可以了,不過如果你要在任何地方都要使用這個執行檔,就要去修改 path,設定方法如下 java_1 我的電腦右鍵->內容 k

    [Read More]