Как исправить "Java: не могу найти символ" - PullRequest
0 голосов
/ 28 апреля 2019

Я использую JB IntelliJ IDEA и пытаюсь создать программу, которая сортирует прямоугольники. Но я не могу исправить

"Error:(28, 22) java: cannot find symbol
  symbol:   method Rectangle(java.lang.Double,java.lang.Double)
  location: class io.github.vadimsam.rectsort.Rectangle".

Что мне делать?

Примечание: воссоздание проекта мне не помогло.

Main:

import java.util.ArrayList;
import java.util.Comparator;
import java.util.Scanner;

class SComparator implements Comparator<Rectangle> {

    public int compare(Rectangle r1, Rectangle r2) {
        return r1.area().compareTo(r2.area());

    }
}

public class Main {

    public static void main(String[] args) {

       ArrayList<Rectangle> rectsArea = new ArrayList<>();
       Scanner input = new Scanner(System.in);
       SComparator comparator = new SComparator();

       while(true){
            System.out.print("A = ");
            Double a = input.nextDouble();
            System.out.print("B = ");
            Double b = input.nextDouble();
            Rectangle.Rectangle(a,b);
            rectsArea.sort(comparator);
            if (a  == 0) {
                System.out.println("Sorted ArrayList:");
                System.out.println(rectsArea);
                break;
            }
        }
    }
}

прямоугольник:

public class Rectangle {
    public Double c, d;

    public Rectangle(Double c, Double d) {
        this.c = c;
        this.d = d;
    }

    Double area() {
        return c * d;
    }
}

Должен возвращаться отсортированный ArrayList

Ответы [ 3 ]

1 голос
/ 28 апреля 2019

Эта строка:

  Rectangle.Rectangle(a,b);

означает вызов статического метода с именем Rectangle, определенного классом Rectangle.Нет такого метода!Это является причиной «не удается найти символ ошибки».

Существует конструктор Rectangle(int, int), но вы не вызываете конструктор в Java.Вы new это.Например:

  Rectangle someRectangle = new Rectangle(a,b);

Однако, исходя из контекста, я подозреваю, что вы должны назначать новые объекты Rectangle элементам массива, который вы создали ранее.

Но ваш код (как бы это сказать) "запутался".Я думаю, что вам нужно внимательно прочитать его и объяснить своей 1010 * резиновой утке , что делает каждое утверждение.

1 голос
/ 28 апреля 2019

Вместо записи:

Rectangle.Rectangle(a,b);

, который вызывает статический метод с именем Rectangle, который потенциально является частью класса Rectangle, попытайтесь создать объект, используя конструктор, который вы объявили в своем классе Rectangle, для создания экземпляра нового объекта прямоугольника:

Rectangle rectangle = new Rectangle(a, b);

Вы не объявили ни одного статического метода с именем Rectangle в своем классе Rectangle, поэтому появляется эта ошибка.

0 голосов
/ 28 апреля 2019

Я думаю, что ваша проблема заключается в строке

Rectangle.Rectangle(a,b);

Это неправильный синтаксис для создания экземпляра вашего объекта, поскольку в вашем классе прямоугольника нет метода Rectangle, только конструктор.Правильный способ использования конструктора следующий:

Rectangle rect = new Rectangle(a, b);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...