2021.05.19
数学
各位(くらい)の値を求める
・整数値、1285
<1285を10で割った余り>
1285÷10=128余り5
この余り5が1の位の値です。
<1285を10で割る>
1285÷10=128
小数点以下切り捨てです。
<128を10で割った余り>
128÷10=12余り8
この余り8が10の位の値です。
<128を10で割る>
128÷10=12
小数点以下切り捨てです。
<12を10で割った余り>
12÷10=1余り2
この余り2が100の位の値です。
<12を10で割る>
12÷10=1
小数点以下切り捨てです。
<1を10で割った余り>
1÷10=0余り1
この余り1が1000の位の値です。
<1を10で割る>
1÷10=0
小数点以下切り捨てです。
ここで割り算の結果が0になったので処理を終了します。
結果は、1の位が5、10の位が8、100の位が2、1000の位が1となりました。
このように10で割った余りの計算と、10で割る計算を繰り返すことで1、10、100…の位の値を取得することができます。
Javaソースコード
以下は、上記の計算を行うJavaのソースコードです。整数値はキーボードで入力します。
Places1.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
import java.util.Scanner; public class Places1 { public static void main( String[] args ) { // 整数の値をキーボードから入力 Scanner scanner = new Scanner( System.in ); System.out.print( "整数の値を入力してください:" ); String line = scanner.next(); // 文字列を整数の値に変換 int num = Integer.parseInt( line ); // 各位を計算してコンソール出力 for ( int place = 1; ; place *= 10 ) { // 各桁の値を計算 int n = ( num % 10 ); System.out.println( place + "の位: " + n ); // 値を10で割る(小数点以下切り捨てになる) num /= 10; // 終了判定 if ( 0 == num ) break; } } }
コンパイル ソースコードが「ANSI」の場合
C:\talavax\javasample>javac -encoding sjis Places1.java
コンパイル ソースコードが「UTF-8」の場合
C:\talavax\javasample>javac Places1.java
実行
C:\talavax\javasample>java Places1
キーボードで整数値を入力して、各位(くらい)の値を求めます。
出力結果
整数の値を入力してください: 1285 1の位: 5 10の位: 8 100の位: 2 1000の位: 1
ここからは、このソースコードを上から順番に解説していきます。
001
import java.util.Scanner;
003
public class Places1 {
クラス名を、Places1としています。
004
public static void main( String[] args ) {
005 006
// 整数の値をキーボードから入力
Scanner scanner = new Scanner( System.in );
標準入力System.inを使って、Scannerクラスのscanを初期化しています。
007
System.out.print( "整数の値を入力してください:" );
printメソッドで、"整数の値を入力してください:" をコンソール出力しています。printメソッドを使っているので、コンソール入力した文字はメッセージの右側に表示されます。printlnメソッドを使った場合、コンソール入力した文字はメッセージの下の行に表示されます。
008
String line = scanner.next();
ここで、入力待ち状態になり、Enterキーが押されるまでの入力文字がlineに格納されます。キーボードの"Ctrl"キーを押しながら"C"を押すと強制終了します。
010 011
// 文字列を整数の値に変換 int num = Integer.parseInt( line );
IntegerクラスのparseIntメソッドで、文字列lineを整数numに変換しています。
013 014
// 各位を計算してコンソール出力 for ( int place = 1; ; place *= 10 ) {
ここからは、各位(くらい)を求める処理です。
"place*=10"は三項演算子を使った書き方で、"place=place*10"と同じです。
015 016 017
// 各桁の値を計算 int n = ( num % 10 ); System.out.println( place + "の位: " + n );
019 020
// 値を10で割る(小数点以下切り捨てになる)
num /= 10;
変数numの値を10で割っています。
022 023
// 終了判定
if ( 0 == num ) break;
以上です。