Elle
Elle

Reputation: 21

Java...While Loop Program

I've got a homework assignment...code is below...got several questions about it...thanks in advance. Beginner Java student...if this looks cludgey, please don't laugh >.> Code below...

    /*
     * Getting to know you...
     * @author Elle dela Victoria
     * @version 092812
     */
       import java.util.*;
       public class A15_1
       {
           public static void main(String[] args)
           {
           Scanner input = new Scanner(System.in);

           System.out.print(
           "Mind answering some questions for me?\n" +
           "Type quit when you're ready to leave.\n");

       while(true)
       {
        System.out.print("Does your name start with the letter H? ");
        input.nextLine();
        int ans = (int)(Math.random() * 5);
        if (ans == 0)
            System.out.println("That's awesome!");
        if (ans == 1)
            System.out.println("Awww, how unfortunate!");
        if (ans == 2)
            System.out.println("You're amazing at this!");
        if (ans == 3)
            System.out.println("LOL!");
        if (ans == 4)
            System.out.println("WTF!! That's horrible!");

        System.out.print("Are you male? ");
        input.nextLine();
        int ans1 = (int)(Math.random() * 5);
        if (ans1 == 0)
            System.out.println("That's awesome!");
        if (ans1 == 1)
            System.out.println("Awww, how unfortunate!");
        if (ans1 == 2)
            System.out.println("You're amazing at this!");
        if (ans1 == 3)
            System.out.println("LOL!");
        if (ans1 == 4)
            System.out.println("WTF!! That's horrible!");

        System.out.print("Are you female?");
        input.nextLine();
        int ans2 = (int)(Math.random() * 5);
        if (ans2 == 0)
            System.out.println("That's awesome!");
        if (ans2 == 1)
            System.out.println("Awww, how unfortunate!");
        if (ans2 == 2)
            System.out.println("You're amazing at this!");
        if (ans2 == 3)
            System.out.println("LOL!");
        if (ans2 == 4)
            System.out.println("WTF!! That's horrible!");

        System.out.print("Are you in school right now?");
        input.nextLine();
        int ans3 = (int)(Math.random() * 5);
        if (ans3 == 0)
            System.out.println("So angry when you're sober!");
        if (ans3 == 1)
            System.out.println("Awww, how unfortunate!");
        if (ans3 == 2)
            System.out.println("You're amazing at this!");
        if (ans3 == 3)
            System.out.println("LOL!");
        if (ans3 == 4)
            System.out.println("WTF!! That's horrible!");

        String userinput = input.nextLine();
        if (userinput.equalsIgnoreCase("quit"))
            break;      
      }
   }
 }
  1. is there any way to use my IF statements for every question I ask without having to change the String name for each question?
  2. is there any way to create a method (?) for those if statements, so I don't have to write them out for EVERY question I ask?
  3. If the user doesn't input an answer in 10 seconds, I'd like to have a timer that prompts them for an answer, how do I do this?

Upvotes: 2

Views: 799

Answers (4)

P.P
P.P

Reputation: 121357

You can have an array of strings and print them according to the input ans:

    String str[] = {"That's awesome!", "Awww, how unfortunate!",
     "You're amazing at this!", "LOL!", "WTF!! That's horrible!"};

      /* code */

  while(true)
       {
        System.out.print("Does your name start with the letter H? ");
        input.nextLine();
        int ans = (int)(Math.random() * str.length);
        System.out.println(str[ans]);

      /* code */
   }

Upvotes: 1

Makoto
Makoto

Reputation: 106389

  1. Yes, you can. You create a method with a parameter of type int to use:

    public void printReply(int ans) {
        if (ans == 0)
            System.out.println("So angry when you're sober!");
        if (ans == 1)
            System.out.println("Awww, how unfortunate!");
        if (ans == 2)
            System.out.println("You're amazing at this!");
        if (ans == 3)
            System.out.println("LOL!");
        if (ans == 4)
            System.out.println("WTF!! That's horrible!");
    }
    

    Call this where appropriate.

  2. Not sure I understand, I think the first answer covers this.

  3. Look into the wait() method, which is specified by all Objects.

As an aside, you're not doing anything with your input. You let it drop on the floor by calling input.nextLine(). You should look into capturing that in a variable.

Upvotes: 0

Javon Harper
Javon Harper

Reputation: 196

I would suggest using a list to store the responses. This will alleviate the need for if statements and also prevents you from having to add a new response in four different places.

List<String> responseList = new ArrayList<String>();
responseList.add("That's awesome!");
responseList.add("LOL!");
responseList.add(.....);

System.out.println(responseList.get(ans));

Upvotes: 0

Gregor Weber
Gregor Weber

Reputation: 688

I'm not sure whether this answers 1, but it should answer 2:

private String getAnswer() {
   int ans = (int)(Math.random() * 5);
   switch(ans) {
   case 0:
      return "That's awesome!";
   case 1:
      return "Awww, how unfortunate!";
   [... and so on ...]
   }
   return null
} 

Than just call it where you need an answer like this: System.out.println(getAnswer());

Upvotes: 0

Related Questions