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

コンパイル時にエラーメッセージが1つ表示されます。

エラー: シンボルが見つかりません symbol: メソッド 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 を使用していると仮定して、IDE を信頼してください。と入力sentence.したとき、挿入するメソッドの選択肢が IDE に表示されましたか? あなたはその方法を見たことがないでしょう。
  3. Javadoc と IDE が利用可能になったら、参照します。今まで行っていたことを単純化できるメソッドが既に利用可能であることがわかります。 たとえばRandomnextInt(int)
  4. Java には Keyboard クラスはありません。問題に合わせて作成されたクラスを使用していない場合は、 を使用してくださいjava.io.Console
  5. 値を計算して別のステートメントで返す必要はありません。最後の 2 つを次のように統合できます。

    private String getSentenceFromUser() {
    System.out.print("文を入力してください :");
    文字列文 = Keyboard.readInput();
    文を返す;
    // 代わりに
    // return Keyboard.readInput();を使用します。
    }

于 2013-06-01T04:54:23.993 に答える