RSS

カテゴリー別アーカイブ: Java

jar

jar -cvmf manifest.mf jar_file class_files

(example) jar -cvmf manifest.mf main.jar *.class

manifest.mf
Manifest-Version 1.0
Main-Class: Main

 
コメントする

投稿者: : 2011/05/13 投稿先 Java

 

タグ:

素数の計算

「エラトステネスのふるい」で素数計算を行う。

 

Main.java

import java.math.*;
import java.util.*;
// エラトステネスのふるい Sieve of Eratosthenes
public class Main {

 // メインプログラム
 public static void main(String[] args) {
  System.out.println("Prime Numbers by Sieve of Eratosthenes\n");

  // コマンドライン引数があれば素数を求める範囲として使う。
  int mx = 1000;  // 素数を求める範囲のデフォルト値を1000とする。
  if (args.length != 0) {
   try
   {
    mx = Integer.parseInt(args[0]);
   }
   catch (Exception e) {

   }
  }

  // 計算する。
  ArrayList<PrimeNumber> primes = Eratosthenes(mx);

  // 結果を表示する
  for (PrimeNumber n : primes) {
   if (n.isPrime) {
    System.out.println(n.number);
   }
  }
 }

 // 素数計算
 public static ArrayList<PrimeNumber> Eratosthenes(int mx) {
  // 素数候補の一覧
  ArrayList<PrimeNumber> primes = new ArrayList<PrimeNumber>();
  int first = 1; // 素数候補の位置

  // 2を素数として登録しておく
  primes.add(new PrimeNumber(2, true));
  // 素数候補を羅列する (偶数は除く)
  for (int i = 3; i <= mx; i += 2) {
   primes.add(new PrimeNumber(i, true));
  }

  // 次の素数候補が存在するかどうか
  boolean noc = true;
  // 素数候補が存在する間繰り返す。
  while (noc) {
   // 素数候補の先頭の数を素数とする。
   primes.get(first).isPrime = true;
   int n = primes.get(first).number;

   // 先頭の数の倍数を素数候補から外す。
   for (PrimeNumber p : primes) {
    if (p.number % n == 0 && p.number > n) {
     p.isPrime = false;
    }
   }

   // 次の素数候補の位置を決定する。
   int i = first + 1;
   int n0 = primes.get(i).number;
   if (n0 * n0 >= mx) {
    break;
   }
   while (n0 * n0 < mx) {
    if (primes.get(i).isPrime) {
     first = i;
     noc = true;
     break;
    }

    noc = false;
    i++;
    n0 = primes.get(i).number;
   }
  }

  return primes;
 }
}

PrimeNumber.java

public class PrimeNumber {
 public int number;
 public boolean isPrime;

 public PrimeNumber(int n, boolean f) {
  number = n;
  isPrime = f;
 }
}

コンパイルと実行
$ java Main.java PrimeNumber.java
$ jar cfm prime.jar manifest.mf *.class
$ java -jar prime.jar 1000

manifest.mfの内容

 Main-Class: Main

 
コメントする

投稿者: : 2010/11/19 投稿先 Java

 

タグ: , , ,

Java throw文

/My Document/Develop/Java/Basic.Exception.Throws.zip

public class Main
{
 public static void main(String[] args)
 {
 try
 {
 Class1.test1();
 }
 catch (Exception ex)
 {
 System.out.println("Exception: " + ex.getMessage());
 }
 }
}

class Class1
{
 public static void test1() throws Exception
 {
 throw new Exception("Class1.test1");
 }    
}

 
Java throw文 はコメントを受け付けていません。

投稿者: : 2010/11/13 投稿先 Java

 

タグ: ,

Java 例外を発生するメソッド

/My Document/Develop/Java/Basic.Exception.Throw.zip

public class Main
{
 public static void main(String[] args)
 {
 try
 {
 Class1.test1();
 }
 catch (ArrayIndexOutOfBoundsException ex)
 {
 System.out.println("ArrayIndexOutOfBoundsException i=" + ex.getMessage());
 }
 }
}

class Class1
{
 public static void test1() throws ArrayIndexOutOfBoundsException
 {
 int a[] = new int[10];

 int i = 0;
 while (true)
 {
 a[i] = i;
 System.out.println(String.valueOf(i));
 i++;
 }
 }    
}

 
Java 例外を発生するメソッド はコメントを受け付けていません。

投稿者: : 2010/11/13 投稿先 Java

 

タグ:

Java 複数例外 catch と finally

/My Document/Develop/Java/Basic.Exception.Test2.zip

import java.io.*;

public class Main
{
 public static void main(String[] args)
 {
 Class1.test1(args[0]);
 }
}

class Class1
{
 public static void test1(String str)
 {
 char c = '';
 int i = 0;
 int a[] = new int[10];
 StringReader sr = null;

 try
 {
 sr = new StringReader(str);
 while (true)
 {
 c = (char)sr.read();
 a[i] = i;
 System.out.println(String.valueOf(i) + ": " + String.valueOf(c));
 i++;
 }
 }
 catch (ArrayIndexOutOfBoundsException ex)
 {
 System.out.println("ArrayIndexOutOfBoundsException i=" + ex.getMessage());
 }
 catch (IOException ex)
 {
 System.out.println("IOException: " + ex.getMessage());
 }
 finally
 {
 if (sr != null)
 {
 sr.close();
 }
 System.out.println("InputStream closed.");
 }
 }
}

 
Java 複数例外 catch と finally はコメントを受け付けていません。

投稿者: : 2010/11/13 投稿先 Java

 

タグ:

Java ArrayIndexOutOfBoundsException

/My Document/Develop/Java/Basic.Exception.Test1.zip

 

public class Main
{
 public static void main(String[] args)
 {
 Class1.test1();
 }
}

class Class1
{
 public static void test1()
 {
 int a[] = new int[10];

 try
 {
 int i = 0;

 while (true)
 {
 a[i] = i;
 System.out.println(String.valueOf(i));
 i++;
 }
 }
 catch (ArrayIndexOutOfBoundsException ex)
 {
 System.out.println("ArrayIndexOutOfBoundsException i=" + ex.getMessage());
 }
 }
}

 
Java ArrayIndexOutOfBoundsException はコメントを受け付けていません。

投稿者: : 2010/11/13 投稿先 Java

 

タグ:

Java 入れ子になった例外

/My Document/Develop/Java/Basic.Exception.Nest.zip

 

public class Main
{
 public static void main(String[] args)
 {
 if (args.length == 0)
 {
 Class1.test1(1);
 }
 else
 {
 Class1.test1(Integer.valueOf(args[0]));
 }
 }
}

class Class1
{
 public static void test1(int n)
 {
 int a[] = new int[10];

 int i = 0;

 try
 {
 try
 {
 while (i < n)
 {
 a[i] = i;
 System.out.println(String.valueOf(i));
 i++;
 }

 throw new Exception("Class1.Exception");
 }
 catch (ArrayIndexOutOfBoundsException ex)
 {
 System.out.println("ArrayIndexOutOfBoundsException i=" + ex.getMessage());
 }
 }
 catch (Exception ex)
 {
 System.out.println(ex.getMessage());
 }
 }    
}

 
Java 入れ子になった例外 はコメントを受け付けていません。

投稿者: : 2010/11/13 投稿先 Java

 

タグ: