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ソースコード
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 ) {
この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();
ここで、入力待ち状態になり、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;
以上です。