#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);