Как избавиться от ошибок «не могу найти символ» в моем коде? - PullRequest
0 голосов
/ 06 марта 2019

Я сейчас работаю над проектом и продолжаю получать сообщения об ошибках. Я застрял и связался со многими людьми (включая моего инструктора), и теперь я обратился к вам, ребята.

Вот мой код.

public class Circle

    private int radius = getRadius();
    private double area = getArea();

    public Circle(int r) 
    {
        r = radius;
    }

    public int getRadius()
    {
        return radius;
    }

    public double getArea(int r)
    {
        return area = Math.PI * r * r;  
    }
}

/

java.util.Scanner;

public class CircleTest
{
    public CircleTest()
    {
        int radius = getRadius();
        double area = getArea(r);       
    }   

    public static void main (String[] args) 
    {

        Scanner kboard = new Scanner(System.in);

        System.out.print("Give the radius of a circle. ");
        String area = kboard.nextLine();

        System.out.println("The area of the circle is... " + 
area);
        System.out.println();

        kboard.close();
    }
}

C: \ Users \ jthom \ My Work \ Circle \ src \ CircleTest.java: 18: ошибка: не удается найти символ

двойная площадь = getArea (r);

символ: переменная r

расположение: класс CircleTest

.

C: \ Users \ jthom \ My Work \ Circle \ src \ CircleTest.java: 33: ошибка: не удается найти символ

System.out.println ("Площадь круга ..." + область);

символ: переменная область

расположение: класс CircleTest

2 ошибки

Ответы [ 2 ]

5 голосов
/ 06 марта 2019

Давайте начнем с класса Circle. Это ваш оригинальный код:

public class Circle

    private int radius = getRadius();
    private double area = getArea();

    public Circle(int r) 
    {
        r = radius;
    }

    public int getRadius()
    {
        return radius;
    }

    public double getArea(int r)
    {
        return area = Math.PI * r * r;  
    }

}

Для ваших переменных вам не нужна «площадь», так как она рассчитывается. Кроме того, вы не должны назначать радиус чему-либо, кроме как в конструкторе:

    private int radius;
    //private double area = getArea(); <-- don't need this variable at all

Вы передаете "r" конструктору, но затем неправильно пытаетесь присвоить ему значение "radius". Это задом наперед; вместо этого вы должны присвоить значение «r» «радиусу»:

    public Circle(int r) 
    {
        radius = r;
    }

Наконец, в getArea() вам не нужен переданный радиус или «область»; просто верните вычисленное значение (используя сохраненное значение в радиусе, а не в r):

    public double getArea()
    {
        return Math.PI * radius * radius;  
    }

Соберите все вместе, ваш класс Circle должен выглядеть примерно так:

public class Circle

    private int radius;

    public Circle(int r) 
    {
        radius = r;
    }

    public int getRadius()
    {
        return radius;
    }

    public double getArea()
    {
        return Math.PI * radius * radius;  
    }

}

В CircleTest вы должны сначала получить радиус от пользователя, а затем передать его конструктору Circle. Наконец, с вашим экземпляром Circle, вызовите его методы getRadius () и getArea ().

0 голосов
/ 06 марта 2019

Вы не определили переменные r и area, чтобы помочь решить эту проблему

заменить double area = getArea(r); на double area = circle.getArea(radius);

и

System.out.println("The area of the circle is... " + area); с System.out.println("The area of the circle is... " + circle.getArea(Integer.parseInt(area)));

здесь круг является объектом класса Class

Circle circle = new Circle(radius) //Note: circle cannot be accessed from main function create another object for class circle again in main

это должно помочь

edit : вот ссылка на ошибку Что означает ошибка компиляции "Cannot find symbol"?

...