2013-11-12 5 views
-2

Надеюсь, у вас был хороший день. Причина, по которой я иду, снова попросить о помощи, заключается в том, что меня попросили выполнить задачу, которую я, по-видимому, не способен сделать. Я не хочу получать ответы только на руководство и, может быть, немного ответ в руководстве, потому что я такой же толстый, как профессиональный борец грязи.Возвратный тип Java и отказ метода

https://wiki.ittc.ku.edu/ittc/EECS168:Homework3

Выше мое назначение, если вы заботитесь смотреть, но это только предыстория.

public class Fighter { 
public static void main(String[] args){ 
    String name; 
    int hitPoints; 
    int defenseLevel; 
    int attackSpeed; 
    Scanner input=new Scanner(System.in); 


    public static void hitPoints(){ 
     int hitPoints; 
     do{ 
      Scanner input=new Scanner(System.in); 
      System.out.println("What is the hit points for the fighter"); 
      hitPoints=input.nextInt(); 
      return hitPoints; 
     }while (hitPoints<=50); 
     return 0; 
    } 
} 

Я уверен, что это происходит неправильно, это немного удручает. Самая большая проблема прямо сейчас, однако, заключается в том, что я получаю сообщение об ошибке «Синтаксическая ошибка на токене« void », @ expected« Я также пробовал ее с различными типами, такими как int и double. Нет кубиков. Я почти надеюсь, что это не что-то супер простое, потому что я пробовал довольно много в течение примерно 4 часов на этой глупой маленькой, тривиальной, ночной проблеме. В задании говорится использовать только один метод void:

Напишите два метода внутри класса Fighter;

public void input() 
public boolean attack(Fighter opponent) 

Однако, я не мог понять, как сделать это с один, так что я собирался использовать 4 или 5, но, очевидно, я не очень хорошо, что я делаю. Я прошу прощения за то, что вы назвали хорошее название программирования, но любая помощь, которую могут предложить люди, будет весьма признательна.

Все самое лучшее,

Ник

ответ

1

Первые вещи сначала. У вас должен быть метод hitPoints() вне основного. Вы не можете вложить его в метод main().

А также, возвращаемый тип вашего hitPoints() недействителен, у вас есть операторы return в методе. Измените тип возврата на int, чтобы вы могли вернуть значение int из этого метода в вызывающий метод.

public static int hitPoints(){ 

Кроме того, поскольку его do-while петли (выход контрольного цикла) а, вам не нужно возвращение по умолчанию. Вместо этого инициализируйте свой hitPoints по умолчанию 0.

public static int hitPoints() { // return type is int, to return an int value 
    int hitPoints = 0; // default value 
    do { 
     Scanner input = new Scanner(System.in); 
     System.out.println("What is the hit points for the fighter"); 
     hitPoints = input.nextInt(); 
     return hitPoints; 
    } while (hitPoints <= 50); 
    // return 0; // not required, as its a do-while loop above 
} 
+1

Вы замечательный, большое спасибо за ответ и так быстро. Я так многому учусь, и люди так благодарны.Я был жестоко расстроен и должен был уйти на несколько минут. Очень приятно вернуться и иметь план атаки. –

0

Два prblems:

Во-первых, вы пытаетесь инкапсулировать метод внутри метода, который не является законным. Переместите hitPoints за пределами главного method.

Во-вторых вы пытаетесь вернуть целочисленное значение из метода hitPoints но ничего не возвращает в соответствии с его определением:

public static void hitPoints() 

Так что либо изменить hitPoints сигнатуру метода вернуть int или удалить return выписка из метода, упомянутого здесь:

return 0; 
+0

Большое спасибо за ответ, по какой-то причине я думал, что все должно быть внутри основного метода, но я думаю, что это только основной класс. Это также действительно помогает думать об этой линии как об определении. Еще раз спасибо. –

Смежные вопросы