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

2021/05/20 公開

・指定した位の値を求める

各位(くらい)の値の説明はこちらの記事を参考にしてください。「各位(くらい)を求める」

与えられた整数値Xの任意の位の値は以下の式で計算できます。位は10のN乗(1、10、100、1000…)の値Pを与えます。

指定した位の値=(X/P)%10

(X/P)はXをPで割る計算です。結果を小数点以下は切り捨てた整数にします。

%10は、10で割ったときの余りを計算するものです。この計算によって1桁目の値を取得することができます。

例)X=12345でP=100の場合、

100の位の値=(12345/100)%10=(123)%10=3

例)X=12345でP=1000の場合、

100の位の値=(12345/1000)%10=(12)%10=2

例)X=554でP=1000の場合、

100の位の値=(554/1000)%10=(0)%10=0

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

Places2.java ← クリックしてダウンロードページに移動
001:    import java.util.Scanner;
002:    
003:    public class Places2 {
004:    	// 指定した位の値を求める
005:    	static int getNumber( int num, int place )
006:    	{
007:    		// 位が1未満の場合-1を戻す(エラー)
008:    		if ( 1 > place ) return -1;
009:    
010:    		// numの絶対値を計算
011:    		if ( 0 > num ) num = -num;
012:    
013:    		// 結果を戻す
014:    		return ( num / place ) % 10;
015:    	}
016:    
017:    	// メイン
018:    	public static void main( String[] args ) {
019:    		// 整数の値をキーボードから入力
020:    		Scanner scanner = new Scanner( System.in );
021:    		System.out.print( "整数の値を入力してください:" );
022:        		String line = scanner.next();
023:    
024:    		// 文字列を整数の値に変換
025:    		int num = Integer.parseInt( line );
026:    
027:    		// 各位を計算してコンソール出力
028:    		int place;
029:    
030:    		// 1の位
031:    		place = 1;
032:    		System.out.println( place + "の位: " + getNumber( num, place ) );
033:    
034:    		// 10の位
035:    		place = 10;
036:    		System.out.println( place + "の位: " + getNumber( num, place ) );
037:    
038:    		// 100の位
039:    		place = 100;
040:    		System.out.println( place + "の位: " + getNumber( num, place ) );
041:    
042:    		// 1000の位
043:    		place = 1000;
044:    		System.out.println( place + "の位: " + getNumber( num, place ) );
045:    
046:    		// 10000の位
047:    		place = 10000;
048:    		System.out.println( place + "の位: " + getNumber( num, place ) );
049:    	}
050:    }

Places2実行

C:\talavax\javasample>java Places2

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

Places2.javaの出力結果

整数の値を入力してください: 56
1の位: 6
10の位: 5
100の位: 0
1000の位: 0
10000の位: 0

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

001:    import java.util.Scanner;

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

003:    public class Places2 {

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

004:    	// 指定した位の値を求める
005:    	static int getNumber( int num, int place )
006:    	{

指定した整数の値と位(くらい)を渡して、その位の値を戻すメソッドです。変数numには任意の整数変数placeには10のN乗(N>0)の値を渡します。

007:    		// 位が1未満の場合-1を戻す(エラー)
008:    		if ( 1 > place ) return -1;

変数placeの値が1未満の場合にreturn文で-1を戻しています。これはエラーを意味しています。

このメソッドでは、変数のplaceの値が10のN乗であるかチェックを行っていません。placeの値が1以上であれば計算します。

010:    		// numの絶対値を計算
011:    		if ( 0 > num ) num = -num;

変数numの値がマイナスの場合、プラスの値になるようにしています。

013:    		// 結果を戻す
014:    		return ( num / place ) % 10;

指定した位の値=(X/P)%10の計算値を戻しています。正しく計算できた場合、0から9の値が戻ります。

017:    	// メイン
018:    	public static void main( String[] args ) {

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

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

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

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

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

022:        		String line = scanner.next();

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

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

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

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

027:    		// 各位を計算してコンソール出力
028:    		int place;

ここからは、各位(くらい)を求める処理です。int型変数placeを宣言しています。

030:    		// 1の位
031:    		place = 1;
032:    		System.out.println( place + "の位: " + getNumber( num, place ) );

1の位の値をコンソール出力しています。

034:    		// 10の位
035:    		place = 10;
036:    		System.out.println( place + "の位: " + getNumber( num, place ) );

10の位の値をコンソール出力しています。

038:    		// 100の位
039:    		place = 100;
040:    		System.out.println( place + "の位: " + getNumber( num, place ) );

100の位の値をコンソール出力しています。

042:    		// 1000の位
043:    		place = 1000;
044:    		System.out.println( place + "の位: " + getNumber( num, place ) );

1000の位の値をコンソール出力しています。

046:    		// 10000の位
047:    		place = 10000;
048:    		System.out.println( place + "の位: " + getNumber( num, place ) );

1000の位の値をコンソール出力しています。

以上です。

■関連コンテンツ

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

剰余(余り)計算

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

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

for文

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

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

if文

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

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

計算結果の表示

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

■新着情報

2021.06.18 変数の初期値 変数に値を代入しないで計算
2021.05.28 短針と長針の角度 短針と長針の角度は?
2021.05.19 各位(くらい)を求める 1の位の値は?10の位は?

■広告

 

 

 

 

 

 

 

 

 

Topへ