///////////////////////////////////////////////////////////////////////////////////
// ICS 3U1 - Mrs. Shanks
// Asad Choudhry
// November 28, 2009
// Family Feud
// 
// This program takes as input the question numbers, the questions, the answers,
// and the points. the question number is saved to the questionNumArray, the
// the question is saved to the questionNameArray, the answers are saved to 
// the answersArray and the points are saved to the answersNumArray.
// 
// This prgram will then and check if the user wants the rules, if yes the output 
// will be the rules. The loop will then generate a random question, and take as 
// input a guess from the user, the program will
// check if the guess is equal to one of the answers in answersArray, if so 
// the loop will add the points in answersNumArray to the score, add one to the
// correct answers, and add one to found, the output will be the points won and
// "Correct". the loop will then check if found is equal to 1 if not one is 
// added to strikes and the output is "Incorrect". The loop check if three 
// questions have been asked, if so the users final score is the output,
// otherwise, the next question is asked and the score is the output. The loop
// will check if the users score is greater then the highscore, if so the 
// output will be the players score to a file, and the the output to the screen
// will be "Congragulations you beat the highscore!" The loop will then check 
// if the user wants to play again, if so the loop repeats. Otherwise the 
// output will be "Thank-you for playing."
///////////////////////////////////////////////////////////////////////////////////
// Variables List:
// found = 0;
// count = 0;
// max = 0;
//int score = 0;
//int guess = 0;
//int repeat = 0;
//int errorCheck = 0;
//int correct = 0;
//int min = 0;
//int strikes = 0;
//int randomNum = 1;
//int highScore = 0;
//String playAgain = "";
//String name = "";
//String input = "";
//final int RANGE = 4;
//final int EMPTY = 0;
//final int MAX_INPUT = 34;
//final int GUESS_MAX = 8;
//final int MAX_CHECK = 7;
//final int ANSWERS_CORRECT = 5;
//final int MAX_QUESTION = 3;
//final int MAX_ARRAY = 35;
//final int NUM_RANGE = 7;

import java.io.*;
class FamilyFeud
{
  public static void main (String args [])
    throws java.io.IOException 
  {
    int found = 0;
    int count = 0;
    int max = 0;
    int score = 0;
    int guess = 0;
    int repeat = 0;
    int errorCheck = 0;
    int correct = 0;
    int min = 0;
    int strikes = 0;
    int randomNum = 1;
    int highScore = 0;
    String playAgain = "";
    String name = "";
    String input = "";
    final int RANGE = 4;
    final int EMPTY = 0;
    final int MAX_INPUT = 34;
    final int GUESS_MAX = 8;
    final int MAX_CHECK = 7;
    final int ANSWERS_CORRECT = 5;
    final int MAX_QUESTION = 3;
    final int MAX_ARRAY = 35;
    final int NUM_RANGE = 7;
    int random [] = new int [RANGE];
    int questionNumArray [] = new int [MAX_ARRAY];
    int answersNumArray [] = new int [MAX_ARRAY];
    String questionNameArray [] = new String [MAX_ARRAY];
    String answersArray [] = new String [MAX_ARRAY];
    
    
    // This loop will and check if the user wants the rules, if yes the output will
    // be the rules. The loop will then generate a random question, and take as 
    // input a guess from the user, the program will
    // check if the guess is equal to one of the answers in answersArray, if so 
    // the loop will add the points in answersNumArray to the score, add one to the
    // correct answers, and add one to found, the output will be the points won and
    // "Correct". the loop will then check if found is equal to 1 if not one is 
    // added to strikes and the output is "Incorrect". The loop check if three 
    // questions have been asked, if so the users final score is the output,
    // otherwise, the next question is asked and the score is the output. The loop
    // will check if the users score is greater then the highscore, if so the 
    // output will be the players score to a file, and the the output to the screen
    // will be "Congragulations you beat the highscore!" The loop will then check 
    // if the user wants to play again, if so the loop repeats. Otherwise the 
    // output will be "Thank-you for playing."
    do
    {
      FileReader fro = new FileReader ("survey.txt");
      BufferedReader bfr = new BufferedReader (fro);
      FileReader frt = new FileReader ("highScore.txt");
      BufferedReader bhr = new BufferedReader (frt);
      BufferedReader br = new BufferedReader (new InputStreamReader (System.in));
      
      
      
      
      // This loop takes as input the question numbers, the questions, the answers,
      // and the points. the question number is saved to the questionNumArray, the
      // the question is saved to the questionNameArray, the answers are saved to 
      // the answersArray and the points are saved to the answersNumArray.
      for (int countArray = 0; countArray <= MAX_INPUT; countArray ++)
      {
        input = bfr.readLine();
        questionNumArray [countArray] = Integer.parseInt (input);
        questionNameArray [countArray] =  bfr.readLine();
        answersArray [countArray] = bfr.readLine();
        input = bfr.readLine();
        answersNumArray [countArray] = Integer.parseInt (input);
      }
      fro.close();
      
      System.out.println ("Welcome to Family Feud PHS Version");
      input = bhr.readLine();
      highScore = Integer.parseInt (input);
      System.out.println ("The previous high score was: " + highScore);
      frt.close();
      System.out.println ("Can you beat it?");
      System.out.println ("What is your Name?");
      name = br.readLine();
      
      
      System.out.println ("Do you want the rules?");
      input = br.readLine ();
      
      // This selection checks if input equals "yes" if so the output is the rules.
      if (input.equalsIgnoreCase ("yes"))
      {
        System.out.println ("Now for the rules. A survey was given to one hundered" +
                            " people they each they each answered seven questio" +
                            "ns, the top five answers were taken. You will be as" +
                            "ked three of the questions, each question has five " +
                            "correct answers, each will have a point value assoc" +
                            "iated with it correspnding to how many people answe" +
                            "red it on the survey. The player will guess as to t" +
                            "he answer if correct the points the answer has will" +
                            "be added to the players score. After three incorrec" +
                            "t answers the question is over, after three questio" +
                            "n the players score is shown and the game is over.");
      }
      
      // This loop will generate a random question, and take as input a guess from 
      // the user, the program will check if the guess is equal to one of the answers
      // in answersArray, if so the loop will add the points in answersNumArray to 
      // the score, add one to the correct answers, and add one to found, the output 
      // will be the points won and "Correct". the loop will then check if found is
      // equal to 1 if not one is added to strikes and the output is "Incorrect". The
      // loop check if three questions have been asked, if so the users final score 
      // is the output, otherwise the next question is asked and the score is output.
      for (int countQuestion = 1; countQuestion <= MAX_QUESTION; countQuestion ++)
      {
        System.out.println ("\nRound: " + countQuestion);
        randomNum = (int)(Math.random() * NUM_RANGE);
        // This loop will take as input a guess from the user, the program will check
        // if the guess is equal to one of the answers in answersArray, if so the 
        // loop will add the points in answersNumArray to the score, add one to the 
        // correct answers, and add one to found, the output will be the points won 
        // and "Correct". the loop will then check if found is equal to 1 if not one
        // is added to strikes and the output is "Incorrect". The loop check if three
        // questions have been asked, if so the users final score is the output, 
        // otherwise, the next question is asked.
        while (strikes != MAX_QUESTION || correct != ANSWERS_CORRECT)
        {
          System.out.println (questionNameArray [randomNum * ANSWERS_CORRECT]);
          
          min = ANSWERS_CORRECT * randomNum;
          System.out.println ("What is your guess?");
          input = br.readLine ();        
          max = min + RANGE;
          
          // This loop will check if the guess is equal to one of the answers in 
          // answersArray, if so the loop will add the points in answersNumArray to
          // the score, add one to the correct answers, and add one to found, the 
          // output will be the points won and "Correct".
          for (int answerCheck = min; answerCheck <= max; answerCheck++)
          {
            // This Selection will check if the guess is equal to one of the answers
            // in answersArray, if so the loop will add the points in answersNumArray
            // to the score, add one to the correct answers, and add one to found, the 
            // output will be the points won and "Correct".
            if (input.equalsIgnoreCase (answersArray [answerCheck]))
            {
              score += answersNumArray [answerCheck];
              correct ++;
              System.out.print ("Correct!");
              System.out.println (" That was worth " + 
                                  answersNumArray [answerCheck] + " points.");
              answersArray [answerCheck] = null;
              count ++;
              found ++;
            }
          }
          // This selection will check if found is equal to 1, if not one is added to
          // strikes and the output is "Incorrect".
          if (found != 1)
          {
            System.out.println ("That was incorrect.");
            strikes ++;
          }
          
          // This selection will check if correct is equal to ANSWERS_CORRECT, if so
          // strikes will be equal to MAX_QUESTION, esle if strikes is equal to 
          // MAX_QUESTION, correct is will be equal to ANSWERS_CORRECT.
          if (correct == ANSWERS_CORRECT)
          {
            strikes = MAX_QUESTION;
          }
          else if (strikes == MAX_QUESTION)
          {
            correct = ANSWERS_CORRECT;
          }
          found = EMPTY;
        }
        correct = EMPTY;
        strikes = EMPTY;
        System.out.println ("Your score is " + score + ".");
      }
      // This selection will check if the players score is higher then the 
      // highscore, if so the output will be the players score to a file, and the
      // the output to the screen will be "Congragulations you beat the highscore!"
      if (score > highScore)
      {
        FileWriter fw = new FileWriter ("highScore.txt");
        fw.write (score + "\r\n");
        fw.close();
        System.out.println ("Congragulations you beat the highscore!");
      }
      System.out.println ("Would you like to play again?");
      input = br.readLine ();
    }
    while (input.equalsIgnoreCase ("yes"));
    System.out.println ("Thank-you for playing!");
  }
}

This is the survey.txt file

1
What is your favourite breakfast cereal?
Frosted Flakes
17
1
What is your favourite breakfast cereal?
Special k
16
1
What is your favourite breakfast cereal?
Cheerios
14
1
What is your favourite breakfast cereal?
Cinnamin Toast Crunch
8
2
What is your favourite subject in school?
Gym
26
2
What is your favourite subject in school?
Science
11
2
What is your favourite subject in school?
Math
8
2
What is your favourite subject in school?
Art
7
2
What college or university do you want to attend?
None
6
3
What college or university do you want to attend?
University of Toronto
21
3
What college or university do you want to attend?
None
15
3
What college or university do you want to attend?
Durham College
9
3
What college or university do you want to attend?
Harvard
5
3
What college or university do you want to attend?
University
5
4
What is your favourite colour?
Blue
42
4
What is your favourite colour?
Red
21
4
What is your favourite colour?
Green
11
4
What is your favourite colour?
Purple
10
4
What is your favourite colour?
Black
3
5
What is your favourite shakespeare play?
Romeo and Juliet
35
5

What is your favourite shakespeare play?
None
30
5
What is your favourite shakespeare play?
Macbeth
13
5
What is your favourite shakespeare play?
King Lear
4
5
What is your Favourite Shakespeare play?
Hamlet
4
6
What is your Favourite brand of potato chips?
Lays
50
6
What is your Favourite brand of potato chips?
Doritos
20
6
What is your Favourite brand of potato chips?
None
7
6
What is your Favourite brand of potato chips?
Miss Vickie's
7
6
What is your Favourite brand of potato chips?
Sunchips
5
7
What is your Favourite Car Company?
Ford
16
7
What is your Favourite Car Company?
Lamborghini
12
7
What is your Favourite Car Company?
Toyota
12
7
What is your Favourite Car Company?
BMW
9
7
What is your Favourite Car Company?
General Motors
5

This is the highscore file

137

I keep getting this error:
java.lang.NumberFormatException: For input string: "None"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at FamilyFeud.main(FamilyFeud.java:128)

I cant figure out the solution what so ever
Please and thank you :)

Recommended Answers

All 2 Replies

Your error indicates that you attempted to parse an integer at line 128 of your program (which is correct: it says Integer.parseInt(input)). However, the program was unable to parse an int, because your input did not immediately contain an integer. Which means you are reading in the file incorrectly. For example if you say something like Integer.parseInt("This isn't an int!"); it will throw the same exception/error.

hope that helps

Nothing seems to work, anyone out there that can help?

:)

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.