2013-06-01 44 views
0

我正在寫一個從程序中刪除一個字符的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); 
    } 
} 

我收到一個錯誤消息,當我編譯說:

Error: cannot find symbol symbol: method deleteCharAt(int) location: variable sentence of type java.lang.String

我花了數小時試圖解決這個問題,所以幫助將非常感激。

+0

請問String有這樣一個方法,'deleteCharAt(int)'?檢查API:http://docs.oracle.com/javase/7/docs/api/java/lang/String.html如果它不在API中,則它不存在。 – Patashu

回答

4

String類沒有deleteCharAt方法。 StringBuilder有。

這樣做:

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

我會建議使用像的Netbeans或者Eclipse的IDE。這些開發工具會立即告訴你發生了什麼。

2

symbol: method deleteCharAt(int)

你看了看String類的API嗎?有沒有這樣的方法?

然後,您可以通過方法名查看API以查找具有deleteCharAt(...)方法的所有類。

I have spend hours trying to fix this, so help would be very appreciated.

API是你的朋友。當你有這樣的問題時,我會先從那裏開始。

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

String沒有一個名爲deleteCharAt方法。

  1. 總是在您的瀏覽器中提供Java 7 Javadoc頁面,以便查找類似這樣的內容。它位於http://docs.oracle.com/javase/7/docs/api/
  2. 另外,假設您使用的是IDE,請相信您的IDE。當您鍵入sentence.時,IDE是否顯示一組要插入的方法?你不會看到這種方法。
  3. 雖然可以使用Javadoc和IDE,但請瀏覽它。你會看到有可用的方法可以簡化你正在做的事情。例如,Random具有nextInt(int)
  4. Java中沒有Keyboard類。如果您沒有使用針對您的問題製作的課程,請使用java.io.Console
  5. 您不必計算一個值並以另一個語句將其返回。你可以合併最後兩個:

    private String getSentenceFromUser(){
    System.out.print(「Enter a sentence:」);
    String sentence = Keyboard.readInput();
    返回句子;
    //改爲使用
    //返回鍵盤。readInput();
    }