簡體   English   中英

該程序將一個字符添加到String,然后通過toString()方法顯示結果,並通過length()計算String的數量

[英]Program which add one char to String, then show result by toString() method and count number of String by length()

我必須使用Stringint字段創建類。 沒有參數的構造方法必須初始化:空字符串和0的int值。 addChar(char)方法應允許程序將新字符添加到string(name)。 toString()方法應返回此字符串,而length()方法必須顯示此字符數。 我嘗試過這樣的事情:

public class Word {

String name;
int number;

public Word() {

    name = "";
    number = 0;

}

public char addChar() {
  return ;
}

public String toString() {
  System.out.println(name); 
}

public int length() {
  return name.length();
  System.out.println (name.length());
}

public static void main(String[] args) {

}
}

但是真的不知道如何編寫可以向String添加一個char的方法(存在錯誤),以及如何編寫可以使用這些方法顯示所有功能的程序。 謝謝

- String不可變的 ,因此, 無論何時嘗試更改字符串,實際上都不會在堆上創建新的字符串對象 ,因此無法更改它

-最好使用Mutable的 StringBuilderStringBuffer

- StringBuilder進入了存在從Java 5,這是不是線程安全的 ,那里的StringBuffer到來之前存在StringBuilder ,但它的線程安全的

////////////////////// Edited Part //////////////////////////

嘗試這種方式..........................

public class Word {

StringBuilder name = new StringBuilder();
int number;        // Class variable are already intialized to its initial value,
                   // in the case of int its 0.


                  // String already has an overridden toString method, so its not needed

public void addChar(String s) {

    name.append(s);
}


public String getString(){

    return name.toString();
}

public static void main(String[] args) {

    Word w = new Word();

    System.out.println(w.getString().length());
    w.addChar("hello");
    System.out.println(w.getString().length());
    w.addChar("Hi");
    System.out.println(w.getString().length());
 }
}

您的代碼不會針對至少兩個問題進行編譯:-

  1. 您的toString方法並沒有真正返回任何東西。 而是在打印您的字符串。 更改方法主體以返回您的名稱。

  2. 在您的length方法中,您有unreachable code return語句后有一個sysout語句,它將永遠不會執行。


現在,首先您需要解決以上問題。

然后在addChar方法中,實際上需要傳遞一個char作為parameter以添加到string 你想念它。 另外,您實際上不需要return剛剛添加的char 因此,不需要char return type 只是void將是OK 由於您已經有一個toString方法來獲取修改后的string

因此,您的addChar應該看起來像:

public void addChar(char ch) {
    name += ch;
}

您修改的toStringlength方法應如下所示:-

public String toString() {
    return name; 
}

public int length() {
    return name.length();
}

休息都沒有改變。

重構花費了一點時間,但是在這里您可以進行以下操作:

public class Word {

private String name;
private int number;

public Word() {
    name = "";
}

public void addChar(char ch) {
  name += ch;
  number++;
}

public String toString() {
  return name; 
}

public int length() {
  return number;
}

public static void main(String[] args) {
    Word myWord = new Word();
    myWord.addChar('H');
    System.out.println(myWord);
    myWord.addChar('e');
    myWord.addChar('l');
    myWord.addChar('l');
    myWord.addChar('o');
    System.out.println(myWord);
    System.out.println(myWord.length());

}
}

結果:

H
Hello
5

變化:

  • 方法toString確實返回name
  • 方法長度返回number
  • 我在main方法中添加了一個小的概念證明。
  • 我實現了addChar並將返回類型更改為void。
  • 我將name的數據類型更改為StringBuilder

我為您修復了一些代碼。

筆記:

this("", 0)調用接受Stringint的構造函數。

addChar應該不返回任何內容,而只是添加字符。

toString只是返回一個字符串。

碼:

public class Word {
    String name;
    int number;

    public Word() {
        this("", 0);
    }

    public Word(String s) {
        this(s, 0);
    }

    public Word(String s, int i) {
        name = s;
        number = i;
    }

    public void addChar(char c) {
        name += Character.toString(c);
    }

    public String toString() {
        return name;
    }

    public int length() {
        return name.length();
    }

    public static void main(String[] args) {
        //do stuff
    }
}

暫無
暫無

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

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