2013-05-17 4 views
1

Я все еще участвую, но, похоже, падаю на то, что должно быть очень простым препятствием; мои сильные стороны, похоже, связаны с логикой уравнений, но у меня мало навыков запоминания и реализации функций и исправления простого синтаксиса.Используйте переменную, возвращаемую методом getter в другом классе

Класс, которым я реализую метод in, является MyClass, метод, который я хочу определить переменную, взятую из другого класса, - installIrEvent. Класс, из которого я хочу собрать переменную, - это IREvent, метод getter, возвращающий переменную в этом классе, которую я хочу собрать, - getX.

Теперь код:

метод Getter из IREvent класса:

public int getX() { 
    return x; 
} 

метод, который я хочу использовать эту переменную, чтобы назначить, (с моей очень плохой попытки) в MyClass:

public void establishIrEvent(IREvent arg0) { 

    int source = (IREvent)arg0.getX(); 

} 

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

+0

Почему вы выбрасываете int в IREvent? Кроме того, вы назначаете результат строке. – pbespechnyi

+0

Я забыл изменить это, я пытаюсь назначить int, спасибо, я отредактирую – Phil

+0

Вы не упомянули о какой-либо проблеме, но я думаю, что ваш код не будет компилироваться. Попробуйте 'String source = String.valueOf (arg0.getX());' Вы не можете использовать int для String. Вам нужно его преобразовать. – nakosspy

ответ

3

Есть пара проблем с вашим кодом. Во-первых, вы пытаетесь присвоить intString, потому что getX возвращает int, а переменная source - String. если вы хотите это сделать, то попробуйте:

String source = Integer.toString(arg0.getX()); 

Во-вторых, и меньше проблем, нет необходимости бросать arg0 в IREvent, как это уже определенно, как и в методе establishIrEvent.

+0

спасибо, я не пытался конвертировать в String, это был инструмент – Phil

+0

Итак, я взял то, на что вы ответили, и положил int xCord = arg0.getX(); – Phil

+0

Все работает красиво, спасибо! Извините за мое невежество, но я должен начать где-то ... Я для «забавного» ученика, но невероятно, как часто «для удовольствия» переводится как «заставляйте себя плакать за ад»! – Phil

1

getX() возвращает Int, так что вы можете сделать следующее

public void establishIrEvent(IREvent arg0) { 

    int x = arg0.getX(); // local variable x which is the x from the IREvent class 
    String source = Integer.toString(x); // if that's what the source string should be given x 

} 

Этот код должен скомпилировать и запустить в порядке, но он по-прежнему бесполезно, потому что ничего не изменяется при вызове establishIrEvent(IREvent arg0), потому что обе переменные х и источник отбрасываются после вызова. Поэтому вы, вероятно, хотите иметь переменную x и/или source в качестве переменных-членов класса, где establishIrEvent(IREvent arg0) является методом.

1

Существует проблема в приведенном ниже заявлении:

String source = (IREvent)arg0.getX(); 

Проблема: Метод GetX() из IREvent возвращает Int и вы пытаетесь присвоить его в строку отливки типа возврата к IREvent. В конечном итоге все путают, включая JVM и вас самих.

Я не уверен, нужно ли значение, как String, если это так, то вам нужно сделать так:

String source = String.valueOf(arg0.getX()); 
1

Вы уже сделали большую часть работы. Дело в том, что arg0.getX() возвращает int. Этот int не является строкой, которую вы назначаете, поэтому вы должны преобразовать ее в тип int. Вы пытались преобразовать (typecast) его в тип IREvent, который является неправильным.Попробуйте что-то вроде этого:

public void establishIrEvent(IREvent arg0) { 
    String source = String.valueOf(arg0.getX()); 
} 

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

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