1
/
5

タイピング練習プログラム

javaの繰り返し/if文/配列/FileReader/Thread.sleep()を用いたプログラムを作ってみたくて以前作ったjavaプログラムです。

空き時間に応じて長さを調整できるよう、問題数は自分で設定できるようにしています。java/SQLなど出題言語は実行時にtextを自分で選べます。

java TypePractice [ファイル名] で実行する。

と以下のようなオープニング画面が出てきます。

タイピングしたらEnterを押すと「正解」/「次頑張りましょう」が表示されます。大文字小文字も区別するのでSQL版の時は少々大変です(CapsLockすればいいですけど)

正答率によって、エンディングのコメントも変わります。


import java.io.*;

class TypePractice
{
	public static void main(String[] args)throws IOException{

		//変数置き場
		String str;	//入力された単語の一時保管用
		String kknn;	//確認:
		int kazu;	//配列monndaiの番号を格納する
		int kaisu;	//全何問にするかを格納する
		int seikai=0;	//正解数を格納する
		double temp;	//int型をdouble型にするときの一時保管用
		double hyouka;	//評価:正答率を格納する

		//javaの起動がおかしかった時の表示
		if(args.length !=1){
			System.out.println("ファイル名を正しく指定してください。");
			System.exit(1);
		}

		//問題を読み込む配列の作成とファイルリーダー起動
		BufferedReader br=new BufferedReader(new FileReader(args[0]));
		String[] mondai=new String[50];
		
		//配列mondaiにファイル内の単語を読み込ませる
		for(int i=0;i<mondai.length;i++){
			str=br.readLine();
			mondai[i]=str;
		}

		//ファイルリーダーを閉じる
		br.close();

		//オープニング
		System.out.println("これからタイピングの練習を行います。");

		//問題数を入力してもらい、変数kaisuに格納する
		System.out.println("何問やりますか?");
		br=new BufferedReader(new InputStreamReader(System.in));
		str=br.readLine();
		kaisu=Integer.parseInt(str);

		//ゲーム開始
		System.out.println("それでは準備をしてください。");

		//カウントダウン
		for(int s=5;s>=0;s--){
			try{
				Thread.sleep(1000);
				System.out.println(s);
			}
		catch(InterruptedException e){}
		}

		//タイピング練習開始
		System.out.println("今から表示される文字をタイピングしてください");

		for(int i=1;i<=kaisu;i++){

			//変数kazuにランダム変数を用いて0-49の数字を格納する
			kazu=(int)(Math.random()*50);

			//視認性を上げるための改行		
			System.out.println();

			//配列mondaiに格納された文字を表示
			System.out.println(mondai[kazu]);
		
			//打ち込まれた内容を変数strに入れる
			br=new BufferedReader(new InputStreamReader(System.in));
			str=br.readLine();

			//判定
			kknn=new String(mondai[kazu]);
			if(kknn.equals(str)==true){
				System.out.println("正解です");
				seikai++;
			}
			else
				System.out.println("次\n頑\n張\nり\nま\nし\nょ\nう\n");
			

		}
		//正答率表示
		System.out.println("正答率は"+seikai+"/"+kaisu+"です");	

		//小数点以下の表示するために、変数の型変更
		temp=kaisu*1.0;
		//正答率を変数hyoukaに格納
		hyouka=seikai/temp;

		//正答率を基に評価を表示
		if(hyouka>=0.8)
			System.out.println("頑張ってますね。");
		else if(hyouka>=0.5)
			System.out.println("もう少し出来るようになると良いですね。");
		else 
			System.out.println("伸びしろがいっぱいですね。");
	}
}

javaのタイピング練習用text

abstract
add
boolean
break
BufferedReader
byte
cd
DataFormatException
do
double
else
Exception
float
if
implements
import
in
int
interface
InterruptedException
IOException
java
javac
length
long
main
new
out
parseBoolean
parseByte
parseDouble
parseFloat
parseInt
parseLong
parseShort
print
println
private
protected
public
readLine
short
static
String
switch
System
Throwable
throws
void
while

SQLのタイピング練習用text

ALTER
AS
AUTO_INCREMENT
AUTOCOMMIT
BEGIN
CALL
CASCADE
COMMIT
CONSTRAINT
CREATE
DATABASE
DATABASES
DEFAULT
DELETE
DELIMITER
DESC
DROP
END
EXISTS
FOREIGN
FROM
INDEX
INNER
JOIN
KEY
LEFT
NOT
NULL
ON
OUTER
PRIMARY
PROCEDURE
PROCEDURE
REFERENCES
RIGHT
ROLLBACK
ROLLBACK
SAVEPOINT
SELECT
SET
SHOW
START
STORED
TABLES
TO
TRANSACTION
UNIQUE
UPDATE
VIEW
WHERE
1 Likes
1 Likes