ラベル オブジェクト の投稿を表示しています。 すべての投稿を表示
ラベル オブジェクト の投稿を表示しています。 すべての投稿を表示

2008/02/07

【Java】 BigDecimal

【大整数】
*多数桁処理のために「大十進数(BigDecimal)」のクラスを使う.

使用パッケージ宣言:
import java.math.BigDecimal;


定義(BigDecimal):
「大十進数」はオブジェクトとして定義する必要があるので以下のように定義する.
BigDecimal b = new BigDecimal(
String);
Stringには文字列を入れる.
*また,BigDecimalの配列は他の配列の宣言と同じである.
BigDecimal [] b = new BigDecimal[30];
*これでBigDecimal型の配列,b[30]を宣言したことになる.

演算(BigDecimal):
オブジェクトとして定義した「大十進数」はオブジェクトの演算メソッドを用いて演算を行う.主な演算メソッドを次にあげる.

返り値型種類記述
BigDecimal加法:a + ba.add(b);
BigDecimal減法:a - ba.subtract(b);
BigDecimal乗法:a * ba.multiply(b);
BigDecimal除法:a / ba.divide(b);
BigDecimal剰余:a % ba.remainder(b);
BigDecimalべき乗:a ^ ba.pow(int b);
BigDecimal絶対値:|a|a.abs();
BigDecimal符号反転:a = - aa.negate();
BigDecimal最小値:min aa.min();
BigDecimal最大値:max aa.max();
BigDecimal合同:a ≡ c (mod b)c = a.mod(b);
BigDecimalべき乗の合同:a ^ m ≡ c (mod b)c = a.modPow(m, b);
BigDecimal逆元(mod b):a ^ -1 (mod b)a.modInverse(b);
BigDecimal最大公約数(gcd(a, b)):gcd(a, b)a.gcd(b);
boolean等号:a == ba.equals(b);
int大小比較:a <>a.compareTo(b);

*表中のa, b, cは特に断りがない限り,BigDecimal型.
*「equals」はboolean型のメソッド.オブジェクトの同一性をチェック
*「compareTo」はint型のメソッドで,「a < a =" b」の場合0,「a"> b」の場合1となる.


出力(BigDecimal):
*大十進数はオブジェクト型のデータなので,出力の際はデータ変換で文字列型にしてから出力する.
System.out.println("BigDecimal b = "+b.toString());


*大十進数の文字列化にはDecimalFormatクラスが向いている.DecimalFormatクラスを使用することで,小数点の桁数,カンマをつけることができる.


例:
使用パッケージ宣言:
import java.text.DecimalFormat;

フォーマットの用意:
String format = "0.00000000000000000000";
DecimalFormat dF = new DecimalFormat( format );

BigDecimalを宣言:
BigDecimal b1 = new BigDecimal( "4.1" );
BigDecimal b2 = new BigDecimal( "8.2" );

加法を実行:
BigDecimal b = b1.add( b2 );

結果の表示:
System.out.println( dF.format( b ) );
// 12.30000000000000000000


このように小数点以下の桁数を指定することができる.

2007/11/22

【Java】 BigInteger 追記01

【大整数】
*多数桁処理のために「大整数(BigInteger)」のクラスを使う.

使用パッケージ宣言:
import java.math.BigInteger;


定義(BigInteger):
「大整数」はオブジェクトとして定義する必要があるので以下のように定義する.


BigInteger b = new BigInteger(String);


Stringには文字列を入れる.
*また,BigIntegerの配列は他の配列の宣言と同じである.

BigInteger [] b = new BigInteger[30];

*これでBigInteger型の配列,b[30]を宣言したことになる.


演算(BigInteger):
オブジェクトとして定義した「大整数」はオブジェクトの演算メソッドを用いて演算を行う.主な演算メソッドを次にあげる.

返り値型種類記述
BigInteger加法:a + ba.add(b);
BigInteger減法:a - ba.subtract(b);
BigInteger乗法:a * ba.multiply(b);
BigInteger除法:a / ba.divide(b);
BigInteger剰余:a % ba.remainder(b);
BigIntegerべき乗:a ^ ba.pow(int b);
BigInteger絶対値:aa.abs();
BigInteger符号反転:a = - aa.negate();
BigInteger最小値:min aa.min();
BigInteger最大値:max aa.max();
BigInteger合同:a ≡ c (mod b)c = a.mod(b);
BigIntegerべき乗の合同:a ^ m ≡ c (mod b)c = a.modPow(m, b);
BigInteger逆元(mod b):a ^ -1 (mod b)a.modInverse(b);
BigInteger最大公約数(gcd(a, b)):gcd(a, b)a.gcd(b);
boolean等号:a == ba.equals(b);
int大小比較:a <>a.compareTo(b);


*表中のa, b, cは特に断りがない限り,BigInteger型.
*「equals」はboolean型のメソッド.オブジェクトの同一性をチェック
*「compareTo」はint型のメソッドで,「a < a =" b」の場合0,「a"> b」の場合1となる.


出力(BigInteger):
*大整数はオブジェクト型のデータなので,出力の際はデータ変換で文字列型にしてから出力する.
System.out.println("BigInteger b = "+b.toString());

2007/11/16

【Java】 BigInteger

【大整数】
*多数桁処理のために「大整数(BigInteger)」のクラスを使う.


使用パッケージ宣言:
import java.math.BigInteger;


定義(BigInteger):
「大整数」はオブジェクトとして定義する必要があるので以下のように定義する.

BigInteger b = new BigInteger(String);

Stringには文字列型データを入れる.
*また,BigIntegerの配列は他の配列の宣言と同じである.

BigInteger [] b = new BigInteger[30];

*これでBigInteger型の配列,b[30]を宣言したことになる.



演算(BigInteger):
オブジェクトとして定義した「大整数」はオブジェクトの演算メソッドを用いて演算を行う.主な演算メソッドを次にあげる.

返り値種類記述
BigInteger加法:a + ba.add(b);
BigInteger減法:a - ba.subtract(b);
BigInteger乗法:a * ba.multiply(b);
BigInteger除法:a / ba.divide(b);
BigInteger剰余:a % ba.remainder(b);
BigIntegerべき乗:a ^ ba.pow(int b);
BigInteger絶対値:aa.abs();
BigInteger符号反転:a = - aa.negate();
BigInteger最小値:min aa.min();
BigInteger最大値:max aa.max();
BigInteger合同:a ≡ c (mod b)c = a.mod(b);
BigIntegerべき乗の合同:a ^ m ≡ c (mod b)c = a.modPow(m, b);
BigInteger逆元(mod b):a ^ -1 (mod b)a.modInverse(b);
BigInteger最大公約数(gcd(a, b)):gcd(a, b)a.gcd(b);


*表中のa, b, cは特に断りがない限り,BigInteger型.


出力(BigInteger):
*大整数はオブジェクト型のデータなので,出力の際はデータ変換で文字列型にしてから出力する.

System.out.println("BigInteger b = "+b.toString());

【Java】 Tokenizer

使用パッケージ(java.util.StringTokenizer)宣言:
import java.util.*;

*StringTokenizerを使うと文字列をトークンに分割する.(数字,識別子,引用文字は区別されない.)
*区切り文字はクラス作成時などに指定することができる.デフォルトはスペース.


使用例:


StringTokenizer st = new StringTokenizer("This is my Weblog for Java learning");
while (st.hasMoreTokens())
{
println(st.nextToken());
}

これを表示すると下記のようになる.

This
is
my
Weblog
for
Java
learning



クラスの定義:


public StringTokenizer(String str, String delim, boolean Tokens)
str - 分割する文字列
delim - 区切り文字の定義(省略可)
Tokens - 区切り文字をトークンに含めるかを示すフラグ(省略可,trueで区切り文字もトークンとして返される.)


主なメソッド:

返り値メソッド説明
booleanhasMoreTokens()分割したトークンがまだあるかを調べる
StringnextToken()次のトークン(文字列)を返す.
intcountTokens分割したトークンの数を返す.


*主にファイル入力で数値データを入力したいとき,いったんreadLine()で文字列として読み込んだデータをトークンに分割.その後にデータ変換で数値データに変換する.

2007/11/12

【Java】 入力オブジェクト

例外処理:
throws Exception

*例外処理についてはまだ詳しく分かりません.


標準入出力宣言:
import java.io.*;


標準入力オブジェクト:
*「文字列」入力の際,以下のオブジェクトを生成する.


InputStreamReader in = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(in);

*System.inで入力ストリームが返され,InputStreamReaderで文字入力ストリームに変換し,BufferedReaderでラップすることで効率化したオブジェクト.

*実際に入力する時は


String s = br.readLine();

で1行文字列を読み込む.(数値を読み込む際も1度文字列で読み込む)


ファイル入力オブジェクト:

FileInputStream fi = new FileInputStream("infile.in");
InputStreamReader in = new InputStreamReader(fi);
BufferedReader br = new BufferedReader(in);

*System.inのかわりにFileInputStreamを使いinfile.inというファイルからのファイル入力ストリームを作成,InputStreamReaderで文字入力ストリームに変換し,BufferedReaderでラップすることで効率化したオブジェクト.

*実際にファイル入力する時は

String s = br.readLine();

で1行文字列を読み込む.(数値を読み込む際も1度文字列で読み込む)