2014-01-19 2 views
-1

Я очень новичок в java и играл с кодом. Мне было любопытно, как я могу напечатать возвращаемое значение в классе B с помощью System.out.print в классе A. Я не хочу использовать System.out.print в классе B. Я уже знаю, как это сделать.Печать Возвращаемые значения из другого класса

-------- КЛАСС А ------------------------------------ ----

import java.util.Scanner; 

public class Moregot { 


    public static void main(String[] args){   
     Scanner scan = new Scanner(System.in); 
     Give giveObj = new Give(); 
     System.out.println("Enter your First Name "); 
     String fNamed = scan.nextLine(); 
     System.out.println("Enter your Last Name "); 
     String lNamed = scan.nextLine(); 
     System.out.println("Enter your Age "); 
     int theAge = scan.nextInt(); 
     Give.setInfomation(fNamed, lNamed, theAge);   
     System.out.println("Your Name is " + giveObj.getfN() + " "+ giveObj.getlN() + " and you are age "+ giveObj.getOld()); 
    } 
} 

-------- КЛАСС B ------------------------------ -----------

package Practice2; 

public class Give { 

    private String _fName, _lName; 

    private int _age; 

    public static void setInfomation(String fNam, String lNam, int old) 
    { 
     String _fName = fNam; 
     String _lName = lNam; 
     int _age = old; 
    } 

    public String getfN(){ 
     return _fName; 
    } 

    public String getlN(){ 
     return _lName; 
    } 

    public int getOld(){ 
     return _age; 
    } 

} 
+1

Ваш класс подавай не должны иметь статические методы и поля, нет. –

+0

Вопрос отредактирован: форматированный код. Запрос на удаление «кодового решения». –

ответ

0

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

public void setInfomation(String fNam, String lNam, int old) 
{ 
    _fName = fNam; 
    _lName = lNam; 
    _age = old; 
} 

Кроме того, не объявляйте _fName, lName и _age снова в методе setInfomation, потому что вы скрываете поля , объявленные в классе.

Наконец, в методе main, вызовите setInformation с экземпляром giveObj вы создали:

giveObj.setInfomation(fNamed, lNamed, theAge); 
0
  • Избавьтесь от всех статических методов из класса дают. Класс Moregot должен создавать экземпляры экземпляра и вызывать их методы, но не вызывать статические методы вне класса.
  • Фактически, что метод getInformation должен быть заменен конструктором.
  • В конструкторе вы должны использовать параметры, передаваемые, чтобы установить поле класса, то есть, this.foo = foo;
  • Я хотел бы изменить основной метод, где вы получите все исходные данные, и только затем создать объект ДАЙ , передавая эти исходные данные в его конструктор.
  • Я бы дал класс Give достойный метод toString(), который возвращает строковое представление состояния объекта. Например, ваш метод вернет строку, содержащую значения в полях имен и в поле возраста.
  • Тогда любой класс, содержащий объект «Дать», может легко распечатать его, передав объект «Дать» вызову System.out.println(...).
  • Вы захотите прочитать приличный учебник по Java, чтобы изучить зачатки, поскольку из этого вы сможете построить все последующее программирование. Мышление на Java от Брюса Эккеля является хорошим.

закодированного пример ответ является предпочтительным

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

1

В вашем изменении Give класса линии:

String _fName = fNam; 
String _lName = lNam; 
int _age = old; 

к:

_fName = fNam; 
_lName = lNam; 
_age = old; 

Кроме того, изменение:

Give.setInfomation(fNamed, lNamed, theAge); 

к:

giveObj.setInfomation(fNamed, lNamed, theAge); 

и удалить static декларации от setInfomation()

Одна проблемы заключается в том, что внутри методе setInfomation() создавать новые переменные и присвоить им значение вместо задания параметров для ваших членов класса.

Вторая проблема заключается в том, что вы называете setInfomation() с Give - ваш класс (поскольку он объявлен как статический) вместо того, чтобы она не статическую и назвав его с экземпляром вы создали: giveObj

+0

Проблема также в том, что метод 'setInformation (String, String, String)' является статическим: P –

+0

@JoshM вправо! Я тоже собирался добавить его :) – alfasin

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