创建分割方法

时间:2017-12-11 18:46:56

标签: java methods

我正在尝试编写一个带有两个整数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)演员

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;
                        ^

任何人都可以解释为什么这些代码不起作用并向我展示如何编写正常运行的代码?

5 个答案:

答案 0 :(得分:1)

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并强制转换为Double对象。

答案 1 :(得分:1)

You方法返回int,但return (Double) a / b;返回一个double。 你应该改变它,以便你有

public double divide(int a, int b) {

作为第一行(如果您想返回double)或

return (int) a / b;

如果您想返回int

答案 2 :(得分:1)

  1. 如果您希望结果加倍,则需要更改函数的返回类型double。
  2. 使用Double.parseDouble(String.valueOf(a))获取双倍值。
  3. 如果你不改变你的功能的返回类型,那么将会丢失 如果您将响应作为十进制值,则为精度。所以要改变 返回您的函数类型

答案 3 :(得分:1)

第一个问题是Double.parseDouble()使用String返回double:

 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;
        }
    }

在第二种方法中你需要正确投射:

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

答案 4 :(得分:1)

Double.parseDouble()需要一个字符串作为输入,因此Double.parseDouble(“4”)可以工作,但Double.parseDouble(4)不正确。 尝试将所有参数更改为double,将返回类型更改为double,以避免在代码中进行类型转换。此外,如果用户想要划分两个十进制值,则他/她不需要调用另一个函数来执行此操作。

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;
}