向String添加一个char的程序,然后通过toString()方法显示结果并按长度计算String的数量()

时间:2012-11-18 16:59:58

标签: java class methods

我必须使用Stringint字段创建课程。没有参数的构造函数必须初始化:空字符串和int的0值。 addChar(char)方法应该让程序将新的字符添加到字符串(名称)。 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的方法(有错误)以及如何编写可以使用这些方法来显示所有工作的程序。 感谢

4 个答案:

答案 0 :(得分:2)

- 当您尝试更改字符串时,String 不可变,所以您无法更改实际上,在堆上创建了一个新的String对象。

- 最好使用可变StringBuilderStringBuffer

StringBuilder来自 Java 5 非线程安全,其中{{1} } 在<{strong>}到来之前存在,但线程安全

//////////////////////编辑部分//////////////////// ///

以这种方式试试..........................

StringBuffer

答案 1 :(得分:1)

您的代码将无法编译至少2个问题: -

  1. 您的toString方法并没有真正返回任何内容。而是打印你的字符串。更改方法正文以返回您的姓名。

  2. 在您的长度方法中,您有unreachable code。在sysout语句之后,您将永远执行return语句。


  3. 现在,首先您需要解决上述问题。

    然后在addChar方法中,您实际上需要将char作为parameter传递给string。你错过了。另外,您真的不需要return刚刚添加的char。因此不需要char return typevoid OK将为toString。因为您已经有string方法来修改addChar

    因此,您的public void addChar(char ch) { name += ch; } 应如下所示: -

    toString

    您修改后的lengthpublic String toString() { return name; } public int length() { return name.length(); } 方法应如下所示: -

    {{1}}

    休息都没有改变。

答案 2 :(得分:1)

这需要一点点重构,但是你走了:

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
  • 我在主要方法中添加了一个小概念证明。
  • 我实现了addChar并将返回类型更改为void。
  • 我将name的数据类型更改为StringBuilder

答案 3 :(得分:0)

我为你修好了一些代码。

注意:

  

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