我正在编写一个从句子中删除字符的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类型的可变句子
我花了好几个小时试图解决这个问题,所以非常感谢帮助。
答案 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
的方法。
sentence.
时,IDE是否显示了一系列要插入的方法?你不会看到那种方法。Random
有nextInt(int)
。java.io.Console
。您不必计算值并将其返回到另一个语句中。您可以合并最后两个:
private String getSentenceFromUser(){
System.out.print(“输入句子:”);
字符串句子= Keyboard.readInput();
返回句子;
//相反,请使用
//返回Keyboard.readInput();
}