另一个类中的方法不能应用于给定类型

时间:2015-02-23 15:53:09

标签: java

基本上,有两个类......一个用于计算圆的区域,另一个用于输入他们想要使用的圆的数量,每个圆的半径和程序然后是在彼此之后显示它。最后,显示最大的区域。它显示一个错误,即第一个类中的方法无法应用于给定类型...

第一堂课:

public class Prac4 {

private float radius;

public Prac4() {
}

public void setRadius(float radius) {
    this.radius = radius;
}

public float getRadius() {
    return radius;
}

public double calcArea() {       //Getting errors if I don't use double
    return 3.14* radius*radius;  //Getting errors if I try to use pow function as pow(radius, 2) even with java.lang.math
}
}

因此calcArea是在第二个函数中调用的部分,用于计算圆的面积。我试过让它成为公共浮点calcArea(),但它带来了一整套新的错误。

第二节课:

import java.util.*;
public class Prac5
{


public Prac5() {   //Not sure why, but my lecturer says it should be like this
}


public static void main(String[] args) {

    int circleNum;
    float radius=0;
    float big=0;

    Scanner scan =new Scanner(System.in);
    Scanner rad =new Scanner(System.in);

    System.out.print("Enter the number of circles: ");
    circleNum = scan.nextInt();

    for(int i=1; i<circleNum;i++)
    {
    Prac4 circle1 = new Prac4();  //Trying to call in the other class
    System.out.printf("Enter the circle %d radius: ", i);
    circle1.setRadius(radius);
    System.out.printf("The radius is: %f", rad);
    double area = circle1.calcArea(radius); //This is where the error occurs, the .calcArea is highlighted

    if (big<area)
    {
        big = area;
}
}

System.out.printf("The biggest area is: %f",big);
}
}

我已经宣布该区域为双重思维它会起作用,因为calcArea是一个双重的,当我尝试将所有内容保持为float或double时出现错误。我还是java的新手,所以也许有些东西我不见了?

编辑:完整错误 - Prac4类中的方法calcArea不能应用于给定类型; 必需:没有参数 发现:浮动 原因:实际和正式的参数列表长度不同

2 个答案:

答案 0 :(得分:3)

此次电话

double area = circle1.calcArea(radius);

与Prac4类中定义的方法不匹配,后者不带参数:

public double calcArea()

将其更改为:

double area = circle1.calcArea();

您不必将radius传递给calcArea(),因为您已经将setRadius传递给circle1.setRadius(radius); - circle1 - 将半径存储在{{1}}中{{1}}实例。

答案 1 :(得分:1)

从我所看到的情况来看,你打电话给我:double area = circle1.calcArea(radius);但你有这个:public double calcArea() {,也就是说,你的calcArea没有接受任何参数。像这样调用它:double area = circle1.calcArea();应该解决问题。