簡體   English   中英

當我嘗試 System.out.println

[英]When i am trying to System.out.println

我為家庭作業項目創建了一個程序,它允許我在運行 EG 后輸入所有數據:名字等。所以我的公共課程如下

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;
    }

}

假設您有 Address 的街道、城鎮和郵政編碼的 getter 方法以及地址的私有變量,有兩種方法可以實現這一點:

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());

此外,如果您只想打印出地址的詳細信息,您應該盡量將其保留為地址,而不是為了良好實踐而包括借款人。 如果您真的想打印出FirstNameLastName ,您需要將這些值傳遞給Address構造函數,但它不再只是Address

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

你必須使用打印功能而不是 println 來完成這項工作......

您可以使用 Java API 中的MessageFormat 類 例如:

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

使用對象的 getter 方法。

System.out.println(address.getStreet());
System.out.println(address.getTown());
System.out.println(address.getPostcode());
    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);

}

您可以做的另一件事是將 toString() 方法調用到您的 Address 類。 toString 實際上是每個對象都使用的方法(Object 超類 iirc 的一部分),每當您嘗試使用 System.out.print 打印對象時,都會自動調用它。 但是,默認情況下,此方法返回 hashcode ,在您的情況下我們不想要。 因此,您必須通過向對象類添加新的 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() 可以實時節省時間,並在您要打印多個對象時減少混亂。

-編輯-

值得指出的是,您也可以為 Borrower 類執行此操作。

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

然后在您的主代碼中,只需輸入...(為了演示,假設您稱您的借款人為“借款人”)

System.out.println(borrower);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM