从句子中删除字符的Java程序

时间:2013-06-01 04:33:48

标签: java

我正在编写一个从句子中删除字符的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)location:   java.lang.String类型的可变句子

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

4 个答案:

答案 0 :(得分:4)

String类没有deleteCharAt方法。 StringBuilder有。{/ p>

这样做:

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

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

答案 1 :(得分:2)

  

symbol:方法deleteCharAt(int)

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

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

  

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

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

答案 2 :(得分: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;
    }
}

答案 3 :(得分:0)

String没有名为deleteCharAt的方法。

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

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