しばらくは簡単なプログラムを作成することに関して記事にする方向に…。
今回は数字の桁数を取得するプログラムについて。
数字の桁数を取得するプログラム作成のために必要な知識
今回のプログラムを作成するにあたり、最低限以下の知識が必要になってくる。
- Scanner
ユーザーに任意の数字を入力してもらうことが可能。 - nextInt()
ユーザーが入力したものを数字に限定させることができるもの。 - whileループ
ループ処理が行われる条件を設定することで、同じ処理を任意の回数繰り返すことができるもの。 - 割り算
桁数を取得するには割り算を使用する。 - System.out.println()
結果を画面に出力させるメソッド。
他にもいくつか方法はあるが、今回作成したプログラムでは以上のものを使用した。
数字の桁数を取得するプログラム
以下が数字の桁数を取得するプログラム。
public class keta {
public static void main(String[] args) {
System.out.println(“数字を入力”);
int a =0;
Scanner sc = new Scanner(System.in);
int b=sc.nextInt();
while(b!=0) {
b=b/10;
++a;
}
System.out.println(“桁数は”+a);
}
}
上記を実行すると以下が表示される。
プログラムの詳細
上で書いたプログラムの詳しい説明をしていく。
まず「int a=0;」と設定したのはwhileループ処理が行われる回数を取得するため。
ループ処理が2回行われるということは桁数が「2」ということ。
スキャナーはユーザーが任意の数字を入力できるようにしたもの。
変数scにユーザーが入力した値が入っているが、その値が整数であるということを「int b=sc.nextInt();」で指定している。
nextInt()については以下参照。
【Javaプログラミング】nextInt()メソッドの簡単な使用例、注意点-プロショ
whileループ内ではユーザーが入力した数字を10ずつ割っていく。
結果が0(割れなくなる)までループを繰り返し、一回処理が行われるたびにaが1ずつ足されていく。
ループが行われる実際の例
たとえば「458」という数字が入力されたとしてwhileループが処理される順番を見ていく。
まず変数bにはユーザーが入力した「458」という整数が入っている。
それを踏まえてwhileループのコードに注目。
b=b/10;
++a;
}
bが0でない場合に{}内が処理されていく。
一回目のループ
b=458→ 0ではない
b=b/10において、右辺で計算されたものが左辺のbに新しく代入される。
458÷10 → 45.8
bの変数の型は「int」のため、小数点以下は切り捨てられてしまう。
そのため、左辺のbには「45」が代入される。
ループ処理がここで一度終わったためaに1足される(→ループが1回行われたということ)。
二回目のループ
一回目のループで得た新しいbの結果「45」を引き継いでループ処理が行われる。
45÷10→ 4.5
小数点以下が切り捨てられて左辺のbは「4」となる。
最後にaに更に1足される(aは2になった)。
三回目のループ
「4」はまだ0ではないためループ処理が行われる。
4÷10→ 0.4
小数点以下は切り捨てられて「0」。
最後にaに1足される(aは3)。
これでbの値は0になったため、これ以上ループは行われない。
よってループが3回行われたということで、桁数は「3」となる。
最後に
数字の桁数を取得したかったら数字を10で割るループ処理をしていくことで求めることができる。
スキャナーを使用することで好きな数字を入力することができる。
コメント