数学
指定の位(くらい)の値を求める
与えられた整数値Xの任意の位の値は以下の式で計算できます。
指定した位の値=(X/P)%10
Pは位を表す整数で、10のN乗(1、10、100、1000…)で与えます。
1の位を求めるならPを1、10の位を求めるならPを10、100の位を求めるならPを100にします。
(X/P)はXをPで割る計算です。計算結果は小数点以下を切り捨てた整数にします。
%10は、10で割ったときの余りを計算するものです。この計算によって1桁目の値を取得することができます。
例)X=12345でP=100の場合、
100の位の値=(12345/100)%10=(123)%10=3
例)X=12345でP=1000の場合、
1000の位の値=(12345/1000)%10=(12)%10=2
例)X=554でP=1000の場合、
1000の位の値=(554/1000)%10=(0)%10=0
各位(くらい)の値の説明はこちらの以下の記事を参考にしてください。
Javaソースコード
Places2.java
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050
import java.util.Scanner; public class Places2 { // 指定した位の値を求める static int getNumber( int num, int place ) { // 位が1未満の場合-1を戻す(エラー) if ( 1 > place ) return -1; // numの絶対値を計算 if ( 0 > num ) num = -num; // 結果を戻す return ( num / place ) % 10; } // メイン public static void main( String[] args ) { // 整数の値をキーボードから入力 Scanner scanner = new Scanner( System.in ); System.out.print( "整数の値を入力してください:" ); String line = scanner.next(); // 文字列を整数の値に変換 int num = Integer.parseInt( line ); // 各位を計算してコンソール出力 int place; // 1の位 place = 1; System.out.println( place + "の位: " + getNumber( num, place ) ); // 10の位 place = 10; System.out.println( place + "の位: " + getNumber( num, place ) ); // 100の位 place = 100; System.out.println( place + "の位: " + getNumber( num, place ) ); // 1000の位 place = 1000; System.out.println( place + "の位: " + getNumber( num, place ) ); // 10000の位 place = 10000; System.out.println( place + "の位: " + getNumber( num, place ) ); } }
コンパイル ソースコードが「ANSI」の場合
C:\talavax\javasample>javac -encoding sjis Places2.java
コンパイル ソースコードが「UTF-8」の場合
C:\talavax\javasample>javac Places2.java
実行
C:\talavax\javasample>java Places2
キーボードで整数値を入力して、各位(くらい)の値を求めます。
出力結果
整数の値を入力してください: 56 1の位: 6 10の位: 5 100の位: 0 1000の位: 0 10000の位: 0
ここからは、このソースコードを上から順番に解説していきます。
001
import java.util.Scanner;
003
public class Places2 {
クラス名を、Places2としています。
004 005 006
// 指定した位の値を求める static int getNumber( int num, int place ) {
007 008
// 位が1未満の場合-1を戻す(エラー)
if ( 1 > place ) return -1;
010 011
// numの絶対値を計算
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();
ここで、入力待ち状態になり、Enterキーが押されるまでの入力文字がlineに格納されます。キーボードの"Ctrl"キーを押しながら"C"を押すと強制終了します。
024 025
// 文字列を整数の値に変換 int num = Integer.parseInt( line );
IntegerクラスのparseIntメソッドで、文字列lineを整数numに変換しています。
027 028
// 各位を計算してコンソール出力 int place;
030 031 032
// 1の位 place = 1; System.out.println( place + "の位: " + getNumber( num, place ) );
1の位の値をコンソール出力しています。
034 035 036
// 10の位 place = 10; System.out.println( place + "の位: " + getNumber( num, place ) );
10の位の値をコンソール出力しています。
038 039 040
// 100の位 place = 100; System.out.println( place + "の位: " + getNumber( num, place ) );
100の位の値をコンソール出力しています。
042 043 044
// 1000の位 place = 1000; System.out.println( place + "の位: " + getNumber( num, place ) );
1000の位の値をコンソール出力しています。
046 047 048
// 10000の位 place = 10000; System.out.println( place + "の位: " + getNumber( num, place ) );
1000の位の値をコンソール出力しています。
以上です。