All pastes #455007 Raw Edit

Unnamed

public java v1 · immutable
·published 2007-04-23 23:07 UTC
rendered paste body
import javax.swing.*;import java.util.*;/** * This program generates 10 fraction arithmetic problems.  User is prompted for a time limit for each question. * Fractions must be multiplied, divided, added, or subtracted. * Scoring is as follows: *            Correct    Wrong * Under Time  10         3 *Over Time    6          0 * Score is kept and shown at the end of the round. *  * The user then has the choice to play again. *  *  * @author Bill Kukowski */class FractionArithmetic {	/**	 * Main method.	 *	 * @params args	 */	public static void main(String[] args) {				boolean playAgain = true;		while (playAgain) //enables user to play again		{			//stores time limit for problem			int seconds = Integer.parseInt(JOptionPane.showInputDialog(null, "How many seconds do you want to complete each problem? (Default 30)", 30));			//generates new problem set			Problems problems = new Problems();			//sets object used for input.			Scanner scanner = new Scanner(System.in);			String guess;			float guessF;			long startTime, answerTime;			boolean correctAns, underTime;			//used for scorekeeping.			int[] scores = new int[4];			//displays each problem			for (int p=0;p<10;p++)			{				guess = "";				//get current system time				startTime = System.currentTimeMillis();				//ouutput problem.				System.out.println(problems.getNumerator1(p) + "    " + problems.getNumerator2(p));				System.out.println("_" + " " + problems.getOperation(p) + " " + "_");				System.out.println(problems.getDenominator1(p) + "    " + problems.getDenominator2(p));				System.out.println("You have " + seconds + " seconds remaining.  Enter answer as a fraction (e.g. 4/7)");				//store user's input				guess = scanner.next();				// split user's input into two ints and store to array				String[] components = guess.split("/");					//divides ints to get float. (needed to compare to float generated by problems.class)				guessF = (float) Integer.parseInt(components[0]) / (float) Integer.parseInt(components [1]);				//get system time after answer is entered.				answerTime = System.currentTimeMillis();				//set booloean for correct answer				correctAns = guessF == problems.getAnswer(p);				//set boolean for undertime				underTime = answerTime < startTime + (seconds * 1000);				//add correct score to correct array entry				if ( correctAns && underTime)					scores[0]++;				if ( correctAns && !underTime)					scores[1]++;				if ( !correctAns && underTime)					scores[2]++;				if ( !correctAns && !underTime)					scores[3]++;				//generate separator between problems				System.out.println("");				System.out.println("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");				System.out.println("");			}			//tally up total score			int points = (10 * scores[0]) + (6 * scores[1]) + (3 * scores[2]);			//display final score			System.out.println("");			System.out.println("");			System.out.println("");			System.out.println("********You're Finished!********");			System.out.println("");			System.out.println("                            Under            Over");			System.out.println("                            Time Limit       Time Limit");			System.out.println("");			System.out.println("Correct Answers             " + scores[0] + "                   " + scores[1]);			System.out.println("Wrong Answers               " + scores[2] + "                   " + scores[3]);			System.out.println("Total Points: " + points + "(" + (scores[0] * 10) + " + " + (scores[1] * 6) + " + " + (scores[2] * 3) + " + 0");			//prompt to play again			System.out.println("Do you want to play again? 1 for yes 0 for no.");			//check playAgain			if (!(scanner.nextInt() == 1)) {				playAgain = false;			}		}	}}/** * This class generates 10 Fraction arithmetic problems. Fractons and operations are stored in an array. * * @author Bill Kukowski */class Problems {		private int[][] fractionGroup1 = new int[2][10];	private int[][] fractionGroup2 = new int[2][10];	private int[] operations = new int[10];	private float[]	answers = new float[10];	private float tmpNum1 = 0;	private float tmpNum2 = 0;		public Problems()	{		//generates first array of fractions		for (int r=0;r<2;r++)		{			for (int c=0;c<fractionGroup1[r].length;c++)			{				fractionGroup1[r][c] = ( (int) (Math.random() * 9) + 1 );			}		}				//generates second arrray of fractions		for (int r=0;r<2;r++)		{			for (int c=0;c<fractionGroup2[r].length;c++)			{				fractionGroup2[r][c] = ( (int) (Math.random() * 9) + 1 );			}		}				// generates array of operations				for (int i = 0;i < operations.length;i++)		{			operations[i] = ( (int) (Math.random() * 4) + 1 );		}				//generates answers for each problem		for (int i = 0;i < 10;i++)		{			tmpNum1 = ( (float) fractionGroup1[0][i] ) / ( (float) fractionGroup1[1][i] );			tmpNum2 = ( (float) fractionGroup2[0][i] ) / ( (float) fractionGroup2[1][i] );						switch (operations[i])			{				case 1: answers[i] = tmpNum1 / tmpNum2;					break;				case 2: answers[i] = tmpNum1 * tmpNum2;					break;				case 3: answers[i] = tmpNum1 + tmpNum2;					break;				case 4: answers[i] = tmpNum1 - tmpNum2;					break;									}		}	}	//returns numerator of 1st number	public String getNumerator1(int problemNum)	{		return Integer.toString(fractionGroup1[0][problemNum]);	}	//reutrns numerator of 2nd number	public String getNumerator2(int problemNum)	{		return Integer.toString(fractionGroup2[0][problemNum]);	}	//returns operation as string	public String getOperation(int problemNum)	{		String tmpOperation = "";			switch (operations[problemNum])		{			case 1: tmpOperation = "/";				break;			case 2: tmpOperation = "*";				break;			case 3: tmpOperation = "+";				break;			case 4: tmpOperation = "-";				break;			}		return tmpOperation;	}	//returns denominator of 1st number	public String getDenominator1(int problemNum)	{		return Integer.toString(fractionGroup1[1][problemNum]);	}	//reurns denominator of 2nd numer	public String getDenominator2(int problemNum)	{		return Integer.toString(fractionGroup2[1][problemNum]);	}	//returns answer for problem.	public float getAnswer(int problemNum)	{		return answers[problemNum];	}}