我正在尝试编写一种方法,该方法需要两个整数A和B并将它们分开。但是我希望结果是双重的。我尝试了两种方法:
(1)
public int divide(int a, int b) {
if (b == 0) {
System.out.println("Error, division by zero is undefined!");
return 0;
}
else {
a = Double.parseDouble(a);
b = Double.parseDouble(b);
return a / b;
}
}
(2)( cast )
public int divide(int a, int b) {
if (b == 0) {
System.out.println("Error, division by zero is undefined!");
return 0;
}
else {
return (double) a / b;
}
}
第一个代码生成错误消息:
error: incompatible types: int cannot be converted to String
a = Double.parseDouble(a);
^
第二秒生成错误消息时:
error: incompatible types: int cannot be converted to Double
return (Double) a / b;
^
任何人都可以解释为什么这些代码不起作用,并向我展示如何编写功能代码?
double.parsedouble()需要一个字符串作为输入,因此double.parsedouble(" 4")可以使用,但是double.parsedouble(4)不正确。尝试将所有参数更改为双打,并将返回类型更改为双重,以避免在代码中进行类型铸造。另外,如果用户想将两个小数值分开,则他/她不需要调用另一个功能来执行。
public double divide(double numerator, double denominator)
{
if(denominator == 0)
{
System.out.println("Error cannot divide by 0");
return 0.0;
}
else
{
return numerator / denominator;
}
}
如果您希望参数是整数,则需要返回类型。
public double divide(int numerator, int denominator)
{
if(denominator == 0)
{
System.out.println("Error cannot divide by 0");
return 0;
}
return (double)numberator / denominator;
}
public double divide(int a, int b)
{
if (b == 0)
{
System.out.println("Error, division by zero is undefined!");
return 0;
}
else
{
return ((double)a) / b;
}
}
您唯一的问题是将int返回并铸造为双对象。
您的方法返回int
,但是return (Double) a / b;
返回双重。您应该更改它,以便您拥有
public double divide(int a, int b) {
作为第一行(如果要返回double
)或
return (int) a / b;
如果要返回int
。
- 如果您希望结果是双倍的,则需要更改函数的返回类型double。
- 使用double.parsedouble(string.valueof(a))获取双重值。
- 如果您不更改您功能的返回类型,则会丢失如果将响应作为小数值,则精确度。因此,请更改返回功能的类型
第一个问题是Double.parseDouble()
乘字符串返回双重:
public double divide(int a, int b) {
if (b == 0) {
System.out.println("Error, division by zero is undefined!");
return 0;
}
else {
double c = Double.parseDouble(a + ".0");
double d = Double.parseDouble(b + ".0");
return c / d;
}
}
在第二个methode中,您需要正确施放:
public double divide(int a, int b) {
if (b == 0) {
System.out.println("Error, division by zero is undefined!");
return 0;
}
else {
return ((double)a) / ((double)b);
}
}