我正在尝试使用方法重载来查找矩形区域。唯一的事情是用户必须输入值。但如果必须从用户那里接受,我们不应该知道他输入的数据类型吗?如果我们这样做,那么重载的目的就变得毫无用处,因为我已经知道了数据类型。
你们可以帮助我吗?
您可以添加到此代码:
import java.io.*;
import java.lang.*;
import java.util.*;
class mtdovrld
{
void rect(int a,int b)
{
int result = a*b;
System.out.println(result);
}
void rect(double a,double b)
{
double result = a*b;
System.out.println(result);
}
}
class rectarea
{
public static void main(String[] args)throws IOException
{
mtdovrld zo = new mtdovrld();
Scanner input= new Scanner(System.in);
System.out.println("Please enter values:");
// Here is the problem, how can I accept values from user where I do not have to specify datatype and will still be accepted by method?
double a = input.nextDouble();
double b = input.nextDouble();
zo.rect(a,b);
}
}
答案 0 :(得分:0)
所以你要做的就是让输入是一个字符串。
所以用户可以输入9或9.0,或者如果你想发疯可能是9。
然后你将解析字符串并将其转换为int或double。然后调用任何重载方法。
http://www.java2s.com/Code/Java/Language-Basics/Convertstringtoint.htm
显示如何将字符串转换为int
答案 1 :(得分:0)
您可以使用不同的类型参数进行重载,例如String,甚至某些对象。如果程序员使用您的矩形方法传入错误的参数类型,这将是一个预防措施,该方法不会中断。
答案 2 :(得分:0)
最好处理程序中输入的检查,而不是让用户为此烦恼。
例如:
1. First let the user give values as String.
Scanner scan = new Scanner(System.in);
String val_1 = scan.nextLine();
String val_2 = scan.nextLine();
2. Now Check the type using this custom method. Place this method in the class mtdovrld,
Call this method after taking user input, and from here call the rect() method.
验证方法:
public void chkAndSet(String str1, String str2)
{
try{
rect(Integer.parseInt(str1), Integer.parseInt(str2));
}
catch(NumberFormatException ex)
{
rect(Double.parseDouble(str1), Double.parseDouble(str2));
}
}