2020.06.02

Javaプログラミング

文字の間違い探し

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

文字の間違い探し

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

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

Javaソースコード

MachigaiChar1.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
public class MachigaiChar1 {
	public static void main( String[] args ) {
		// s1とs2に似ている文字を代入
		String s  = "持";
		String sx = "特";

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

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

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

		// 行のループ
		for ( int r = 1; r <= row; ++ r ) {
			// 桁のループ
			for ( int c = 1; c <= col; ++ c ) {
				if ( ( r == row_x ) && ( c == col_x ) )
					System.out.print( sx );
				else
					System.out.print( s );
			}
			// 改行
			System.out.println();
		}
 	}
}

実行結果

コンパイル ソースコードが「ANSI」の場合

C:\talavax\javasample>javac -encoding sjis MachigaiChar1.java

コンパイル ソースコードが「UTF-8」の場合

C:\talavax\javasample>javac MachigaiChar1.java

実行

C:\talavax\javasample>java MachigaiChar1

出力結果

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

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

Javaソースコードの解説

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

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

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

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

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

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

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

013
014
015
		// 間違い文字を出す位置
		int col_x =  (int)( Math.random() *  (double)col ) + 1;
		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
019
020
021
022
023
024
025
026
027
028
		// 行のループ
		for ( int r = 1; r <= row; ++ r ) {
			// 桁のループ
			for ( int c = 1; c <= col; ++ c ) {
				if ( ( r == row_x ) && ( c == col_x ) )
					System.out.print( sx );
				else
					System.out.print( s );
			}
			// 改行
			System.out.println();
		}

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

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

以上です。

関連コンテンツ

Javaの学習に役立つソースコードを多数紹介しています。是非、ご覧ください。

2022.09.10

1から6のサイコロの目が出る確率を割り出すプログラムの作りかたを解説しています。

2020.05.07

2つのサイコロを振って同じ目が出る確率を割り出すプログラムの作り方を解説しています。

2020.08.25

簡単な「じゃんけん」ゲームの作り方をソースコードを使って詳しく説明しています。

2023.05.22

連続で「じゃんけん」ができるプログラムの作り方をソースコードを使って詳しく説明しています。

2023.05.23

画像の座標系はどのように定義されていますか?

2020.03.23

デジタル画像データを構成している要素について解説しています。

2015.12.22

条件式を判断して処理を分岐する方法を詳しく説明しています。

2023.03.20

変数やクラスに格納されている値をコンソール出力する方法は?

2020.03.23

プログラムの最初に実行されるメソッドは?

2022.12.13

プログラミングで使う変数って何?

2020.03.23

Javaのプログラムを書いてみませんか?プログラムの書き方をくわしく説明しています。

2020.03.23

「Javaソースコード」から実行可能な「オブジェクトコード」に変換する方法をくわしく説明しています。

2020.03.23

画像って何?

2022.07.25

乱数の意味と、Math.randomメソッドの使い方をソースコードを使って詳しく解説しています。

2015.12.27

for文などのループ中に、さらにループがある多重ループについて解説しています。

2021.02.09

プログラミング言語とは?種類や特徴について説明しています。

2022.08.03

StringクラスとStringBuilderクラスを利用したプログラミングの仕方を紹介しています。

2016.12.16

処理を繰り返すために使用するfor文について解説しています。

2020.03.23

広告