ゆるゆるプログラミング

・文字の間違い探し

文字の間違い探しは1つだけ違う文字を目視で探すものです。文字を格子状に並べて1つの文字だけ違う文字にします。下の画像の中に1つだけ”特”(とく)が入っています。

文字の間違い探し

このプログラムは、違う文字を配置する行数と桁数をランダムで決定します。行と桁の2重ループで文字('持')を表示していき、ランダムに決めた行数と桁数になったときだけ違う文字('特')を表示するようにしています。

それでは、このJavaソースコードを紹介します。

MachigaiChar1.java ← クリックしてダウンロードページに移動
001:    public class MachigaiChar1 {
002:    	public static void main( String[] args ) {
003:    		// s1とs2に似ている文字を代入
004:    		String s  = "持";
005:    		String sx = "特";
006:    
007:    		// 桁数(横の数)
008:    		int col = 15;
009:    
010:    		// 行数(縦の数)
011:    		int row = 10;
012:    
013:    		// 間違い文字を出す位置
014:    		int col_x = (int)( Math.random() * (double)col ) + 1;
015:    		int row_x = (int)( Math.random() * (double)row ) + 1;
016:    
017:    		// 行のループ
018:    		for ( int r = 1; r <= row; ++ r ) {
019:    			// 桁のループ
020:    			for ( int c = 1; c <= col; ++ c ) {
021:    				if ( ( r == row_x ) && ( c == col_x ) )
022:    					System.out.print( sx );
023:    				else
024:    					System.out.print( s );
025:    			}
026:    			// 改行
027:    			System.out.println();
028:    		}
029:     	}
030:    }

MachigaiChar1の出力結果

持持持持持持持持持持持持持持持
持持持持持持持持持持持持持持持
持持持持持持持持持持持持持持持
持持持持持持持持持持持持持持持
持持持持持持持持持持持持持持持
持持持持持持持持持持持持持持持
持持特持持持持持持持持持持持持
持持持持持持持持持持持持持持持
持持持持持持持持持持持持持持持
持持持持持持持持持持持持持持持

実行結果は、毎回違います。

それでは、ソースを順番に観ていきましょう。

003:    		// s1とs2に似ている文字を代入
004:    		String s  = "持";
005:    		String sx = "特";

Stringクラスのsに格子を埋める文字を代入しています。Stringクラスのsxに1文字だけ表示される文字を代入しています。好きな文字に変えてください。

007:    		// 桁数(横の数)
008:    		int col = 15;

int型変数colに桁数(横方向の個数)を代入しています。

010:    		// 行数(縦の数)
011:    		int row = 10;

int型変数rowに行数(縦方向の個数)を代入しています。

013:    		// 間違い文字を出す位置
014:    		int col_x = (int)( Math.random() * (double)col ) + 1;
015:    		int row_x = (int)( Math.random() * (double)row ) + 1;

違う文字sxを表示する位置を決めています。int型変数col_xに乱数で1~colの値を入れています。同様に、int型変数row_xに乱数で1~rowの値を入れています。

Math.randomメソッド

public static double Math.random()
■乱数を返します。

  パラメータ なし

  戻り値     0.0以上、1.0未満の乱数

017:    		// 行のループ
018:    		for ( int r = 1; r <= row; ++ r ) {
019:    			// 桁のループ
020:    			for ( int c = 1; c <= col; ++ c ) {
021:    				if ( ( r == row_x ) && ( c == col_x ) )
022:    					System.out.print( sx );
023:    				else
024:    					System.out.print( s );
025:    			}
026:    			// 改行
027:    			System.out.println();
028:    		}

for文でrowとcolの2重ループを作り、rowとrow_x、colとcol_xが同じときにsxを表示しています。それ以外のときはsを表示しています。

ソースコードのrowとcolを変えることで文字を見つける難しさを変えることができます。文字も自由に変えてみてください。

■関連コンテンツ

乱数 random Math.randomの使い方について解説
for文 繰り返し処理に使用するfor文について解説
if文 条件による処理の分岐に使用するif文について解説

■新着情報

2020.07.08 公約数 公約数
2020.07.08 最大公約数 1番大きい約数は?
2020.06.18 3つの値の最大最小 3つの値の最大/最小値
2020.06.03 円を描く(テキスト版) テキストを円を描く
2020.06.02 文字の間違い探し どの文字が違う?

■広告

フィギュア予約最大25%OFF+ポイント5%還元!ホビーサーチ

~約8,000名の受講生と80社以上の導入実績~ 企業向けプログラミング研修ならCodeCamp

日本最大級ショッピングサイト!お買い物なら楽天市場

Topへ