[英]Program which add one char to String, then show result by toString() method and count number of String by length()
我必須使用String
和int
字段創建類。 沒有參數的構造方法必須初始化:空字符串和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的 StringBuilder
或StringBuffer
。
- 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());
}
}
您的代碼不會針對至少兩個問題進行編譯:-
您的toString
方法並沒有真正返回任何東西。 而是在打印您的字符串。 更改方法主體以返回您的名稱。
在您的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;
}
您修改的toString
和length
方法應如下所示:-
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
變化:
name
。 number
。 name
的數據類型更改為StringBuilder 。 我為您修復了一些代碼。
筆記:
this("", 0)
調用接受String
和int
的構造函數。
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.