Java ... While循环程序

时间:2012-09-30 18:32:57

标签: java while-loop

我有一份家庭作业......代码在下面...有几个问题...提前感谢。初学者Java学生...如果这看起来像cludgey,请不要笑>。> 代码如下......

    /*
     * 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. 有没有办法在我要求的每个问题上使用我的IF语句而不必更改每个问题的字符串名称?
  2. 有没有办法为那些if语句创建一个方法(?),所以我不需要为每个问题写出来吗?
  3. 如果用户在10秒内没有输入答案,我想要一个提示他们答案的计时器,我该怎么做?

4 个答案:

答案 0 :(得分:1)

您可以拥有一个字符串数组,并根据输入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 */
   }

答案 1 :(得分:0)

  1. 是的,你可以。您可以使用类型int创建一个方法来使用:

    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!");
    }
    

    在适当的地方打电话。

  2. 我不确定理解,我认为第一个答案涵盖了这一点。

  3. 查看wait()方法,该方法由所有Object指定。

  4. 顺便说一句,你的输入没有做任何事情。你可以通过拨打input.nextLine()让它落在地板上。你应该考虑在变量中捕获它。

答案 2 :(得分:0)

我不确定这是否回答1,但它应该回答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
} 

只需在需要答案的地方拨打电话:System.out.println(getAnswer());

答案 3 :(得分:0)

我建议使用列表来存储回复。这样可以减少对if语句的需求,还可以防止您在四个不同的地方添加新的响应。

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

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