根据java中的输入选择一个函数

时间:2012-11-22 18:16:37

标签: java function

如果我有以下两个功能。 如何选择将要选择的功能?

我想有一种形式的陈述来确定扫描仪的内容,因此只有一个功能。或者它将被传递给函数。

    public static int questionAsk(String question)
{
    Scanner scan = new Scanner (System.in);
    System.out.print (question+"\n");
    System.out.print ("Answer: ");
    return scan.nextInt();
}
    public static String questionAsk(String question)
{
    Scanner scan = new Scanner (System.in);
    System.out.print (question+"\n");
    System.out.print ("Answer: ");
    return scan.nextLine();
}

2 个答案:

答案 0 :(得分:1)

编译器无法知道您正在调用哪种方法。您可以通过将字符串类型更改为其他类型来使其类型安全,如下所示:

    public static int questionAsk(IntQuestion question)
{
    Scanner scan = new Scanner (System.in);
    System.out.print (question.toString() +"\n");
    System.out.print ("Answer: ");
    return scan.nextInt();
}
    public static String questionAsk(StringQuestion question)
{
    Scanner scan = new Scanner (System.in);
    System.out.print (question.toString() +"\n");
    System.out.print ("Answer: ");
    return scan.nextLine();
}

并添加两个新类:

   public class IntQuestion extends String{
       public IntQuestion(String question){
            super(question);
       }
   }

   public class StringQuestion extends String{
        public StringQuestion(String question){
            super(question);
        }
   }

构造IntQuestion StringQuestion时,如果调用构造函数,则可以像构造String一样构造它们:

IntQuestion intQuestion = new IntQuestion("Some String Here");

这只是一点点语法糖,让编译器发挥得很好,并根据类型选择正确的方法。

我希望这会有所帮助。

答案 1 :(得分:0)

您应首先使用if else或switch case扫描,解析然后调用所需的函数。

您现在正在做的是在两个函数中使用相同的代码,而不是重用代码。只需使用单次扫描