如果我有以下两个功能。 如何选择将要选择的功能?
我想有一种形式的陈述来确定扫描仪的内容,因此只有一个功能。或者它将被传递给函数。
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();
}
答案 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扫描,解析然后调用所需的函数。
您现在正在做的是在两个函数中使用相同的代码,而不是重用代码。只需使用单次扫描