当前位置: 首页 > 知识库问答 >
问题:

该程序向字符串中添加一个字符,然后通过toString()方法显示结果,并通过length()计算字符串数

呼延珂
2023-03-14

我必须创建带有字符串和int字段的类。没有参数的构造函数必须初始化:空字符串和int的0值。addChar(char)方法应允许程序向字符串(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添加一个字符的方法(有错误)以及如何编写可以使用这些方法来显示它所有工作的程序。谢谢

共有3个答案

澹台展鹏
2023-03-14

至少有两个问题无法编译您的代码:-

>

在长度方法中,您有无法访问的代码。在return语句之后有一个永远不会执行的sysout语句。

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

然后在addChar方法中,实际上需要将char作为参数传递给字符串。你错过了它。此外,您实际上不需要返回刚才添加的字符。因此,不需要返回类型。只要void就可以OK。因为您已经有了一个toString方法来恢复修改后的字符串

因此,您的addChar应该如下所示:-

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

修改后的toString和length方法应如下所示:-

public String toString() {
    return name; 
}

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

其余均保持不变。

阳兴朝
2023-03-14

这需要一点重构,但你可以这样做:

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并将返回类型更改为false。
  • 我将name的数据类型更改为StringBuilder。
班浩皛
2023-03-14

-字符串是不可变的,因此您无法更改它,当您尝试更改字符串时,实际上会在堆上创建一个新的字符串对象。

-最好使用可变的StringBuilderStringBuffer

-StringBuilder是从Java 5中诞生的,Java 5不是线程安全的,在StringBuilder到来之前存在as StringBuffer,但它是线程安全的。

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

这样试试。。。。。。。。。。。。。。。。。。。。。。。。。。

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());
 }
}
 类似资料:
  • 本文向大家介绍通过+(字符串串联)运算符进行字符串串联。,包括了通过+(字符串串联)运算符进行字符串串联。的使用技巧和注意事项,需要的朋友参考一下 您可以使用Java的“ +”运算符来连接字符串。 示例 输出结果

  • 这是我的代码: 如何根据爱好对学生进行分组。我尝试了以下代码: 它没有给出正确的答案。

  • 我知道如何计算出字符串中某个字符或数字的索引,但是有没有任何预定义的方法可以用来给我第n个位置的字符?所以在字符串“foo”中,如果我要求索引为0的字符,它会返回“f”。 注意——在上面的问题中,我所说的“字符”不是指字符数据类型,而是字符串中的字母或数字。这里重要的一点是,调用该方法时,我不会收到char,而是一个字符串(长度为1)。我知道substring()方法,但我想知道是否有更简洁的方法

  • 问题内容: 在其他语言(如Java)中,通过字符串文字与初始化程序获得的字符串之间实际上存在区别。在Swift中,它们等同吗? 例如 问题答案: 根据苹果文档,这些声明是等效的: 初始化一个空字符串 要创建一个空的String值作为构建更长的字符串的起点,请为一个变量分配一个空的字符串文字,或者使用初始化语法初始化一个新的String实例: 参考:https : //developer.apple

  • 我创建了一个简单的扫描器,用于计算中的字符串数。txt文件。每个字符串位于下一行。它算错了,每次它给我数字297,甚至有超过20000个字符串。这个txt文件是由我编写的另一个程序创建的,它从网站获取链接,并使用FileWriter和BufferedWriter将其保存到。txt文件。可能有什么问题? 编辑:字符串示例:

  • 问题内容: 我知道如何计算字符串中某个字符或数字的索引,但是我可以使用任何预定义的方法在第n个位置给我该字符吗?因此,在字符串“ foo”中,如果我要求索引为0的字符,它将返回“ f”。 注意-在上述问题中,“字符”不是字符数据类型,而是字符串中的字母或数字。这里重要的是,调用该方法时,我不会收到字符,而是一个字符串(长度为1)。而且我知道substring()方法,但是我想知道是否有更整洁的方法