0

我正在编写一个从句子中删除一个字符的java程序。我的代码是;

public class Ex1Program {

    public void start() {
        String sentence = getSentenceFromUser();
        int randomPosition = getRandomPosition(sentence);
        printCharacterToBeRemoved(sentence, randomPosition);
        String changedSentence = removeCharacter(sentence, randomPosition);
        printNewSentence(changedSentence);
    }

    private String getSentenceFromUser() {
        System.out.print("Enter a sentence :");
        String sentence = Keyboard.readInput();
        return sentence;
    }

    int sentenceLength = sentence.length();
    int randomPosition = (int)(Math.random() * sentenceLength) + 0;
        return randomPosition;
    }

    private void printCharacterToBeRemoved(String sentence, int randomPosition) {
        System.out.print("Removing " + sentence.charAt(randomPosition) + " from position" + randomPosition);
    }

    private String removeCharacter(String sentence, int randomPosition) {
        String changedSentence = sentence.deleteCharAt(randomPosition);
        return changedSentence;
    }

    private void printNewSentence(String changedSentence) {
        System.out.print("New sentence is " + changedSentence);
    }
}

我在编译时收到一条错误消息;

错误:找不到符号符号:方法 deleteCharAt(int) 位置:java.lang.String 类型的变量语句

我花了几个小时试图解决这个问题,所以非常感谢您的帮助。

4

4 回答 4

4

该类String没有deleteCharAt方法。有StringBuilder

做这个:

StringBuilder sb = new StringBuilder(sentence);
String changedSentence = sb.deleteCharAt(randomPosition).toString();

我建议使用像 Netbeans 或 Eclipse 这样的 IDE。这些开发工具会立即告诉您发生了什么。

于 2013-06-01T04:38:27.133 回答
2

符号:方法 deleteCharAt(int)

您是否查看过 String 类的 API?有没有这样的方法?

然后,您可以按方法名称查看 API 以查找所有具有 deleteCharAt(...) 方法的类。

我花了几个小时试图解决这个问题,所以非常感谢您的帮助。

API 是您的朋友。当你遇到这样的问题时,我会先从那里开始。

于 2013-06-01T04:37:29.750 回答
0

String 类是 Java 不包含方法 deleteCharAt。您可以自己制作(我的版本与真实版本略有不同):

public String deleteCharAt(String str, int pos)
{  
    try
    {    
        return str.substring(0, pos - 1) + str.substring(pos + 1, str.length());
    }
    catch(Exception e)
    {
        return null;
    }
}
于 2013-06-01T04:39:43.477 回答
0

String没有名为 的方法deleteCharAt

  1. 始终在您的浏览器中提供 Java 7 Javadoc 页面,以便您可以查找此类内容。它位于http://docs.oracle.com/javase/7/docs/api/
  2. 另外,请相信您的 IDE,假设您正在使用一个。当您键入sentence.时,IDE 是否向您显示了要插入的方法的选择?你不会看到那种方法。
  3. 当您有可用的 Javadoc 和 IDE 时,浏览它。你会看到已经有一些方法可以简化你正在做的事情。 RandomnextInt(int),例如。
  4. Java 中没有键盘类。如果您没有使用针对您的问题制作的课程,请使用java.io.Console.
  5. 您不必计算一个值并在另一个语句中返回它。您可以将最后两个合并到:

    private String getSentenceFromUser() {
    System.out.print("请输入一句话:");
    字符串句子 = Keyboard.readInput();
    返回句子;
    // 相反,使用
    // return Keyboard.readInput();
    }

于 2013-06-01T04:54:23.993 回答