2014-11-12 2 views
0

Я создаю игру, и я хочу показать количество жизней на экране. Я не знаю, как добавить номер на экран, но я знаю класс GLabel, который позволяет вам писать String на экране. Так я думал, что это было бы хорошей идеей:Кастинг переменных в конструкторе до вызова супер?

public class Lives extends GLabel 
{ 
    double xPoistion, yPosition; 
    int lives; 
    String s_lives; 

    public Lives(int lives, double xPosition, double yPosition){ 
     super(lives, xPosition, yPosition); 
     this.lives = lives; 
    } 
} 

Однако конструктор GLabel класса работает только с String на том месте, где lives находится в супер. Кажется, я не могу найти решение, чтобы исправить это. Возможно ли это?

Я попытался это:

super(lives.toString(s_lives), xPosition, yPosition); 

результат был:

Lives.java:14: cannot reference s_lives before supertype constructor has been called 
    super(lives.toString(s_lives), xPosition, yPosition); 
+2

Что такое 's_lives'? Это не в коде, который вы показали. Пожалуйста, покажите короткую, но полную программу, которая на самом деле демонстрирует проблему. –

+2

Насколько я вижу, 'lives' имеет примитивный тип' int'. Поэтому вы не можете называть 'lives.toString' ... – Fildor

ответ

4

Похоже, вы используете класс член s_lives (я предполагаю, что это то, что s_lives есть), а не переданная lives параметра , и вы пытаетесь вызвать toString() на примитиве.

Похоже, что вам нужно:

public Lives(int lives, double xPosition, double yPosition) 
{ 
    super(Integer.toString(lives), xPosition, yPosition); 
    this.lives = lives; 
} 
+0

Не могли бы вы рассказать мне, почему невозможно вызвать метод toString для примитивного типа integer? Это потому, что вы можете использовать методы только для объектов? – Joop

+1

@Joop Это правильно. Вы не можете вызывать методы экземпляра для примитивов. Вы можете передавать примитивы только как параметры для методов. – Eran

2

вам просто нужно преобразовать Int в строку

public class Lives extends GLabel{ 
    double xPoistion, yPosition; 
    int lives; 

    public Lives(int lives, double xPosition, double yPosition){ 
     super(lives+"", xPosition, yPosition);// use '+' operation can easily convert the number 
     this.lives = lives; 
    } 
} 
+0

Работает как очарование! – Joop

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