2015-10-19 4 views
-2

Я создал программу для домашнего проекта, которая позволяет мне вводить все данные после запуска EG: имя и т. Д. Таким образом, мой открытый класс выглядит следующим образом:Когда я пытаюсь System.out.println

public Borrower(String fName, String lName, String lNumber, int numberOfBooks, 
     String street, String town, String postcode) { 
    firstName = fName; 
    lastName = lName; 
    libraryNumber = lNumber; 
    noOfBooks = numberOfBooks; 
    address = new Address(street, town, postcode); 
} 

Я тогда раздел, такие как:

public void printBorrowerDetails() { 
    System.out.println(firstName + " " + lastName+ "\n" + "\n" +"Library Number: " 
     + libraryNumber + "\n" +"Number of loans: " + noOfBooks); 
} 

Как я могу написать так Address напечатает в этом формате

FirstName SecondName 
street 
town 
postcode 

код для класса адресов внутри другого класса, который был связан, код

public class Address { 

    private String postcode; 
    private String street; 
    private String town; 

    public Address (String street, String town, String postcode) 
    { 
     this.street= street; 
     this.town= town; 
     this.postcode= postcode; 
    } 

    public String getFullAddress() 
    { 
     return street+"\n"+town+"\n"+postcode; 
    } 

    public String getPostcode() 
    { 
     return postcode; 
    } 

    public String getStreet() 
    { 
     return street; 
    } 

    public String getTown() 
    { 
     return town; 
    } 

    public void printAddress() 
    { 
     System.out.println(street+"\n"+town+"\n"+postcode); 

    } 

    public void setFullAddress(String street, String town, String postcode) 
    { 
     street= street; 
     town= town; 
     postcode= postcode; 
    } 

    public void setPostcode(String postcode) 
    { 
     this.postcode= postcode; 
    } 

    public void setStreet(String street) 
    { 
     this.street= street; 
    } 

    public void setTown(String town) 
    { 
     this.town= town; 
    } 

} 
+1

Можете ли вы показать нам код для адреса? –

ответ

2

Если предположить, что у вас есть геттер методы Адрес улица, город и почтовый индекс, а также приватную переменную для адреса, есть два пути достижения этой цели:

System.out.println(address.getStreet() + "\n" + address.getTown() + "\n" + getPostcode()); 

или

System.out.println(address.getStreet()); 
System.out.println(address.getTown()); 
System.out.println(address.getPostcode()); 

Кроме того, если вы собираетесь распечатывать только адресную информацию, вам следует попытаться сохранить ее как адрес, а не включать заемщика ради хорошей практики. Если вы действительно хотите распечатать FirstName и LastName, вам необходимо передать эти значения в конструкторы Address, но это уже не Address.

0
System.out.print(FirstName + " " + SecondName + "\n"); 
System.out.println(street + "\n" + town + "\n" + postcode); 

вы должны использовать функцию печати вместо Println, чтобы сделать эту работу ...

+1

В Java вы объединяете строку через '+', а не '.' –

+0

его просто грубая идея .. –

+2

Так почему бы просто не написать синтаксис правильно? –

0

Вы можете использовать MessageFormat class из Java API. Например:

String result = MessageFormat.format(
    "{0} {1} \n {2} \n {3} \n {4}", 
    borrower.firstName, Borrower.secondName, address.street, address.town, address.postcode); 

Используйте методы геттера для объекта.

0
System.out.println(address.getStreet()); 
System.out.println(address.getTown()); 
System.out.println(address.getPostcode()); 
+0

спасибо, ребята, я был озадачен часами, и все, что мне не хватало, было end()); –

+0

Если бы это было полезно, не могли бы вы принять мой ответ? –

+0

Подумайте о добавлении некоторого текста в свой код, чтобы объяснить, что вы сделали/как и почему он решил проблему. Таким образом, ваш ответ намного полезнее для будущих читателей – LionC

0
private streetname; 
    private townname; 
    private postnumber; 
    public void address(string street,string town,int postcode){ 
     streetname=street; 
     townname=town; 
     postnumber=post; 
System.out.println(streetname +"\n"+ townname +"\n"+ postnumber); 

}

0

Другая вещь, которую вы можете сделать, это вызвать метод ToString() в адресной классе. toString - фактически метод, который использует каждый объект (часть суперкласса объекта iirc), и он автоматически вызывается всякий раз, когда вы пытаетесь распечатать объект, используя System.out.print. Однако по умолчанию этот метод возвращает хэш-код, который мы не хотим в вашем случае. Из-за этого вы должны переопределить значение по умолчанию, добавив новый метод toString в свой класс объектов, например.

public class Address{ 
    . 
    . 
    . 
    public String toString(){ 
     return street + "\n" + town + "\n" + postcode; 
    } 
} 

Затем, когда вы используете

System.out.println(address); 

он будет печатать, как указано в ToString вашего объекта() метод. Вы также можете написать его как

System.out.println(address.toString()); 

хотя, как я уже сказал, это на самом деле не нужно, потому что Java знает вызвать метод ToString().

toString() может быть хранителем в реальном времени и уменьшает беспорядок, если у вас есть более одного объекта для печати.

-edit-

Стоит отметить, что вы также можете сделать это для вашего класса заемщика.

public class Borrower{ 
    . 
    . 
    . 
    public String toString(){ 
      return fName + " " + lName + "\n\nLibrary Number: " + libraryNumber 
     + "\nNumber Of Loans: " + noOfBooks + "\n" + address; 
    } 
} 

Затем в основном коде, просто положить ... (Ради демонстрации, давайте предположим, что вы назвали ваш Заемщик «Заемщик»)

System.out.println(borrower); 
Смежные вопросы