Javaプログラミング学習サイト ゆるゆるプログラミング

2021/05/19 公開

・各位(くらい)を求める

与えられた整数値の1の位(くらい)の値を計算し、その整数値を10で割っていきます(小数点以下切り捨て)。この計算を整数値が0になるまで繰り返します。

整数値の1の位の値は、整数値を10で割った余りです。以下に具体的な整数値の例で値の動きを確認していきましょう。

整数値1285

<1285を10で割った余り>

   1285÷10=128余り

   この余り1の位の値です。

<1285を10で割る>

   1285÷10=128

   小数点以下切り捨てです。

<128を10で割った余り>

   128÷10=12余り

   この余り10の位の値です。

<128を10で割る>

   128÷10=12

   小数点以下切り捨てです。

<12を10で割った余り>

   12÷10=1余り

   この余り100の位の値です。

<12を10で割る>

   12÷10=

   小数点以下切り捨てです。

<1を10で割った余り>

   1÷10=0余り

   この余り1000の位の値です。

<1を10で割る>

   1÷10=

   小数点以下切り捨てです。

   ここで整数値が0になったので処理を終了します。

結果は、1の位が、10の位が、100の位が、1000の位がとなりました。

このように10で割った余りの計算と、10で割る計算を繰り返すことで1、10、100…の位の値を取得することができます。

以下は、上記の計算を行うJavaのソースコードです。整数値はキーボードで入力します。

Places1.java ← クリックしてダウンロードページに移動
001:    import java.util.Scanner;
002:    
003:    public class Places1 {
004:    	public static void main( String[] args ) {
005:    		// 整数の値をキーボードから入力
006:    		Scanner scanner = new Scanner( System.in );
007:    		System.out.print( "整数の値を入力してください:" );
008:        		String line = scanner.next();
009:    
010:    		// 文字列を整数の値に変換
011:    		int num = Integer.parseInt( line );
012:    
013:    		// 各位を計算してコンソール出力
014:    		for ( int place = 1; ; place *= 10 ) {
015:    			// 各桁の値を計算
016:    			int n = ( num % 10 );
017:    			System.out.println( place + "の位: " + n );
018:    
019:    			// 値を10で割る(小数点以下切り捨てになる)
020:    			num /= 10;
021:    		
022:    			// 終了判定
023:    			if ( 0 == num ) break;
024:    		}
025:    	}
026:    }

Places1実行

C:\talavax\javasample>java Places1

キーボードで整数値を入力して、各位(くらい)の値を求めます。

Places1.javaの出力結果

整数の値を入力してください: 1285
1の位: 5
10の位: 8
100の位: 2
1000の位: 1

ここからは、このソースコードを上から順番に解説していきます。

001:    import java.util.Scanner;

Javaのクラスライブラリの中から「java.util.Scanner」というパッケージにあるクラスを使うために記述しています。

003:    public class Places1 {

クラス名を、Places1としています。

004:    	public static void main( String[] args ) {

このmainメソッドからプログラムを実行します。

005:    		// 整数の値をキーボードから入力
006:    		Scanner scanner = new Scanner( System.in );

標準入力System.inを使って、Scannerクラスのscanを初期化しています。

007:    		System.out.print( "整数の値を入力してください:" );

printメソッドで、"整数の値を入力してください:" をコンソール出力しています。printメソッドを使っているので、コンソール入力した文字はメッセージの右側に表示されます。printlnメソッドを使った場合、コンソール入力した文字はメッセージの下の行に表示されます。

008:        		String line = scanner.next();

nextメソッドで、キーボードから入力された1行を読み取り、String型のlineに代入しています。

ここで、入力待ち状態になり、Enterキーが押されるまでの入力文字がlineに格納されます。キーボードの"Ctrl"キーを押しながら"C"を押すと強制終了します。

010:    		// 文字列を整数の値に変換
011:    		int num = Integer.parseInt( line );

IntegerクラスのparseIntメソッドで、文字列lineを整数numに変換しています。

013:    		// 各位を計算してコンソール出力
014:    		for ( int place = 1; ; place *= 10 ) {

ここからは、各位(くらい)を求める処理です。

for文無限ループを作成しています(条件式なし)。int型変数placeは、結果をコンソール出力するときに使う位(くらい)の値で、1→10→100→1000→…と変化していきます。

"place*=10"は三項演算子を使った書き方で、"place=place*10"と同じです。

015:    			// 各桁の値を計算
016:    			int n = ( num % 10 );
017:    			System.out.println( place + "の位: " + n );

各位(くらい)の値をコンソール出力しています。この値は、変数numの値を10で割った余りで計算しています。

019:    			// 値を10で割る(小数点以下切り捨てになる)
020:    			num /= 10;

変数numの値を10で割っています。

022:    			// 終了判定
023:    			if ( 0 == num ) break;

変数numの値が0がどうかをif文で判定し、0の場合にbreak文for文を抜けます。

以上です。

■関連コンテンツ

指定した位の値を求める 指定した位の値は?
break文 ループから処理から抜け出る
キーボード入力 ScannerクラスとSystem.inを使用
値のコンソール表示 print()、println()とは?
三項演算子 三項演算子について解説
10のN乗かを判定 1、10、100 …
剰余(余り)を計算した結果を表示するプログラムについて解説-画像

剰余(余り)計算

剰余(余り)をを計算するプログラムの紹介と、その結果を表示する方法を解説

繰り返し処理に使用するfor文について解説-画像

for文

繰り返し処理に使用するfor文をJavaのソースコードを使って説明しています。

条件による処理の分岐に使用するif文について解説-画像

if文

条件による処理の分岐に使用するif文について解説

四則演算(足し算/引き算/掛け算/割り算)について-画像

計算結果の表示

足し算(加法)/引き算(減法)/掛け算(乗法)/割り算(除法)の使い方を説明

■新着情報

2021.06.23 配列の初期値 配列の生成直後の値は?
2021.06.18 変数の初期値 変数に値を代入しないで計算

■広告

 

 

 

 

 

スッキリわかるJava入門第3版 [ 中山清喬 ]

価格:2,860円
(2021/6/18 14:32時点)
感想(6件)

 

 

 

 

Topへ