Практикуйте проблемы с Java - PullRequest
0 голосов
/ 20 ноября 2018

Я делаю эту университетскую практику, и я все застрял, я решил создать программу для рисования кругов и линий.Он имеет 3 пакета: Evaluar (с основным классом), Dibujo (с классом рисования) и Forma (с 4 классами, FATHER, Forma, Formabasica, наследие которых формирует Forma и Circulo & Linea, наследие от FormaBasica, вот основной класс.

    package PaqueteAplicacion;

import PaqueteFormas.Forma;
import java.util.Scanner;
import PaqueteFormas.Circulo;
import PaqueteFormas.Linea;


public abstract class Evaluar {


    public static void main (String[] args) {
        //Creamos atributos para lo que graficaremos  
        Forma linea1;
        Forma linea2;

         linea1 =  new Linea(); //PROBLEM HERE
         linea2 =  new Linea(1,1);//PROBLEM HERE


        }

Ошибка Eclipse "Не удается создать экземпляр типа Linea", и я не знаю, почему это вызывает у меня эту проблему.

Это мой класс Linea, у меня то же самоепроблема с Circulo.

package PaqueteFormas;
import java.util.Scanner;
import PaqueteGraficos.Dibujo;

public  class Linea extends FormaBasica {

    //Atributos

        int numSegmentos;


        public Linea(){

        }

        public Linea(int ejeX, int ejeY){
            super(ejeX,ejeY);
        }




        public void cambiarTamano(int incrementoSegmentos){

            numSegmentos = incrementoSegmentos;

        }

        public void paintComponent() {
        Dibujo.dibujarLinea(ejeX, ejeY, numSegmentos);//More Problem ejeX cannot be resolved as a variable

        }
}

Если вам нужна дополнительная информация, пожалуйста, дайте мне знать, спасибо!

Извините, я новичок в StackOverflow, поэтому, если мой пост не верен, пожалуйста, сообщите мне.

Я добавляю остальную часть класса 'java моего проекта: Это ОТЕЦ: Класс Forma:

    package PaqueteFormas;




public abstract class Forma {

    //Añadimos atributos

    private int x,y;


    public Forma() 
    {
        this.x = 1;
        this.y = 1;
    }


    public Forma( int ejeX, int ejeY) {
        this.x = ejeX;
        this.y = ejeY;
    }

    //Establece la edición atributo

    public void setX(int ejeX) {
        x = ejeX;
    }
    public void setY(int ejeY) {
        y = ejeY;

    }


    public int getX() {
        return x;
    };

    public int getY() {
        return y;
    };


    public void moverEjeX(int variacionEnX) {
        x += variacionEnX;

    }
    public void moverEjeY(int variacionEnY) {
        y += variacionEnY;
    }

    public abstract void paintComponent();

    public abstract void cambiarTamano (int variacionTamano);
}

Класс Heritage из Forma:

    package PaqueteFormas;

    public abstract class FormaBasica extends Forma {

    public FormaBasica(){//Constructor por defecto
        super(1,1);
    }

    public FormaBasica(int ejeX, int ejeY){//Constructor pasando los atributos
        super(ejeX,ejeY);
    }
}

наследие другого класса от FormaBasica

 package PaqueteFormas;
    import java.util.Scanner;
    import PaqueteGraficos.Dibujo;

public  class Linea extends FormaBasica {



        int numSegmentos;


        public Linea(){

        }

        public Linea(int ejeX, int ejeY){
            super(ejeX,ejeY);
        }




        public void cambiarTamano(int incrementoSegmentos){

            numSegmentos = incrementoSegmentos;

        }

        public void paintComponent() {
        Dibujo.dibujarLinea(ejeX, ejeY, numSegmentos);
        }
}

1 Ответ

0 голосов
/ 21 ноября 2018

Корень вашей проблемы находится в этой строке в Linea:

        Dibujo.dibujarLinea(ejeX, ejeY, numSegmentos);//More Problem ejeX cannot be resolved as a variable

Сообщение об ошибке имеет смысл: в методе paintComponent, где стоит эта строка, нет переменной ejeX, а также без поля (экземпляр или переменная класса) ejeX в классе Linea.В одном из конструкторов есть параметр ejeX.Но здесь конструктор подобен методу, и вы не можете получить доступ к параметрам или переменным в другом методе, потому что это не имеет смысла делать.Методы вызываются в разное время, поэтому переменные одного метода обычно не существуют, когда другой метод вызывается и выполняется.Конечно, то же самое для ejeY.

Я предполагаю, что вы имели в виду использовать значения ejeX и ejeY, которые были переданы конструктору Linea при создании объекта.Они хранятся в суперклассе Forma, и вы можете получить их с помощью методов getX и getY этого класса.Таким образом, исправление состоит в том, чтобы изменить строку следующим образом:

        Dibujo.dibujarLinea(getX(), getY(), numSegmentos);

Для других ваших проблем: Из-за указанной выше ошибки не удалось скомпилировать класс Linea.Когда он не может быть скомпилирован, он также не может быть создан.Поэтому я надеюсь, что и сейчас это исправлено.

Если при появлении новых ошибок появляются новые сообщения об ошибках, не отчаивайтесь, хотя это нормально.

И это небудьте недружелюбны, наоборот: посмотрите, сможете ли вы найти местного жителя, который поможет вам.Может быть, студент или помощник преподавателя?Время обработки переполнения стека слишком велико, поэтому ваш прогресс будет медленным, если вы положитесь на нас.Тем более, когда вы публикуете столько кода, потому что многие пользователи перестанут читать все это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...