Как вызвать метод из main?

#java #methods #main

#java #методы #program-точка входа

Вопрос:

Я пытаюсь изменить значения точек, используя мой метод MoveUp. Однако у меня возникли проблемы с созданием экземпляра класса и его новых значений в методе main. Я объявил Point x1 = new Point(); тогда x1.moveUp(); , но MoveUp(); создает ошибку, что метод неприменим для аргументов.

    public class Point {
        private int xcoord = 6;
        private int ycoord;



    public static void main(String[] args) {
        Point x1 = new Point();
        x1.moveUp();
        System.out.print(x1);

    }


        public Point ()
        {
            xcoord = 0;
            ycoord = 0;

        }


        public Point (int x, int y)
        {
            x = 9;
            y = 8; 
        }


        public int getX ()
        {
            return xcoord;
        }


        public int getY ()
        {
            return ycoord;
        }


        public void moveUp(int amount) 
        {
            amount = xcoord   1;
        }


        public void moveDown(int amount) 
        {
            amount = ycoord - 2;


        }


        public void moveRight(int amount)
        {
            amount = xcoord   1;

        }


        public void moveLeft(int amount) 
        {
            amount = xcoord - 1;


        }
    }
  

Комментарии:

1. x1.moveUp(); , объявление метода: void moveUp(int amount)

2. у него есть параметр типа int , поэтому передайте int argument..it будет работать нормально

3. Прежде всего, ваш метод moveUp ничего не делает, кроме изменения аргумента. Вновь присвоенное значение никогда не будет использоваться. Во-вторых: ваш метод имеет аргумент, но вы вызываете его без аргумента.

Ответ №1:

Ваши move* методы имеют неправильную логику.

Если вы хотите передать величину, на которую нужно переместить Point , как следует из имени параметра, логика должна обновлять xcoord или ycoord , а не локальную переменную amount .

Например, для того, чтобы двигаться вверх, вы должны добавить amount в ycoord :

     public void moveUp(int amount) 
    {
        ycoord  = amount;
    }
  

Затем вы должны вызвать метод с :

 x1.moveUp(5);
  

Ответ №2:

Как вы можете видеть из объявления метода

 public void moveUp(int amount) 
  

для этого требуется параметр int, поэтому ваш код должен быть примерно таким

 x1.moveUp (50);  // or some other input from your program
  

Также исправьте логическую ошибку в ваших move* методах

Ответ №3:

Согласно вашему коду, метод MoveUp принимает ‘amount’ в качестве аргумента. Но вы вызываете его как

x1.MoveUp();

т.е. без аргумента. Это причина, по которой вы получаете ошибку.

Ответ №4:

  public void moveUp(int amount) 
 {
            amount = xcoord   1;
 }
  

В соответствии с реализацией вашего метода ваш вызов метода должен быть

MoveUp(someIntegerValue)

Ответ №5:

Все предложения о moveUp методе, ожидающем в int качестве аргумента, верны, но я также заметил, что то, что вы делаете внутри этих методов, не имеет смысла — например, вы присваиваете новое значение тому amount , которое вы передали в качестве аргумента. Я думаю, что вы хотите сделать, это обновить xcoord или ycoord

При этом ваш код должен выглядеть следующим образом:

     public void moveUp(int amount) 
    {
        xcoord  = (amount  1);
    }


    public void moveDown(int amount) 
    {           
        ycoord  -=(amount  2);
    }


    public void moveRight(int amount)
    {
       xcoord   = (amount   1);
    }


    public void moveLeft(int amount) 
    {            
        xcoord - =(amount 1);
    }
  

И, как уже предлагалось, вы вызываете такой moveUp метод из своего main:

  public static void main(String[] args) {
        Point x1 = new Point();
        int someAmount = 50;
        x1.moveUp(someAmount );
        System.out.print(x1);
    }
  

Надеюсь, это поможет…

Ответ №6:

Эти методы объявлены неправильно!

     public void moveUp(int amount) 
    {
        amount = xcoord   1;
    }


    public void moveDown(int amount) 
    {
        amount = ycoord - 2;


    }


    public void moveRight(int amount)
    {
        amount = xcoord   1;

    }


    public void moveLeft(int amount) 
    {
        amount = xcoord - 1;


    }
  

У каждого из этих методов есть amount параметр, я полагаю, вы хотите, чтобы точка перемещалась вверх, вниз, влево, вправо на определенную величину. Чтобы сделать это, вы не должны назначать xcoord - 1 amount , потому что это не делает ничего практического. Кроме того, вы, кажется, перепутали координаты x и y.

Вместо этого сделайте это:

     public void moveUp(int amount) 
    {
        ycoord  = amount;
    }


    public void moveDown(int amount) 
    {
        ycoord -= amount;


    }


    public void moveRight(int amount)
    {
        xcoord  = amount;

    }


    public void moveLeft(int amount) 
    {
        xcoord -= amount;


    }
  

Теперь все методы верны, давайте посмотрим, как вы можете правильно вызвать метод.

Как я уже говорил ранее, moveXXX методам требуется количество в качестве аргумента. Итак, если вы вызываете его так:

 x1.moveUp();
  

он не работает, потому moveUp что не знает, насколько он должен двигаться вверх. Вам нужно присвоить ему значение. Допустим, 10:

 x1.moveUp(10);
  

Теперь x1.getX() вернет 10!

Кроме того, я предлагаю вам переопределить toString . Таким образом, println() на самом деле можно напечатать что-то значимое:

 @Override
public String toString() {
    return "("   getX()   ", "   getY()   ")"
}
  

Ответ №7:

public void MoveUp(int amount) { amount = xcoord 1; } помните, что этот метод запрашивает значение int в качестве значения аргумента. Итак, вам нужно указать определенное значение int. например: x1.MoveUp(500);