2

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?
3
  • @Luiggi Mendoza - Keep up the good work! ;) Commented Sep 30, 2012 at 18:37
  • @RichardJPLeGuen I tend to do it every time I can. Commented Sep 30, 2012 at 18:37
  • 1
    Short answers: 1) no, 2) yes, but the method will include all your ifs statements and the Strings in it. 3) It is possible but you're saying that you're a beginner, so it would be better to not look for this feature in console applications. Commented Sep 30, 2012 at 18:38

4 Answers 4

1

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 */
   }
Sign up to request clarification or add additional context in comments.

Comments

0

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());

Comments

0

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));

Comments

0
  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.

1 Comment

For #3, that's not going to do what you think it will do. input.nextLine() is a blocking call, as-is wait. He would want a timer for this, which will require some other code to go alongside it. You should also change the ifs to a switch statement, or at least if-else if-else if (I realize it was copy-pasted).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.