0

こんにちは、このコードを修正して、文字列内ですぐに繰り返される文字を削除する必要があります。例: aaabbbcccdeeff と入力すると、最後に abcdef を返す必要があります。ただし、クラスのコンピューターでは、「範囲外(数値)」のようなものを返します。数値は、使用した文字数に依存します。ただし、私の mac では、出力として 3 のような数値を返すだけで、エラー メッセージは表示されません。私はEclipseにいます。

助けてください、私は教授が言ったことを理解できませんでした。コードは次のとおりです(教授の助けを借りて):

package firstProgramSimple;

import java.awt.Toolkit;
import java.util.Scanner;

public class SimpleVersion {

  public static void main(String[] args) {  

    Scanner kb = new Scanner(System. in );
    System.out.println("Entre String");
    String string = kb.nextLine();
    //System.out.println(string);           
    int length = string.length();
    for (int i = 1; i < length; i++) {
      if (string.charAt(i) != string.charAt(i - 1)) {
        System.out.print(i);
      } else if (string.charAt(i) != string.charAt(i)) {
        System.out.print(i);
      }
    }
  }
}
4

3 に答える 3

0

string.charAt(i)ではなく、印刷する必要がありますi

また、このコードは常に false を返すため不要です。

//string.charAt(i) is always equal to itself
else if ( string.charAt(i) != string.charAt( i )) {
    System.out.print(i);

から開始するi = 1ため、charat インデックス0は印刷されません。-loopの前に、次のfor行を追加する必要があります。

System.out.print(string.charAt(0));
于 2013-05-01T15:27:07.390 に答える
0

カウンターの位置にある文字の値ではなく、ループカウンターを印刷しています。

System.out.print(i);

次のようにする必要があります。

System.out.print(string.charAt(i));

サイズが 2 未満の入力に対しては、arrayOutOfBoundsException が発生します。文字列を初期化したら、次の行を追加することをお勧めします。

if(string == null || string.length() < 2){
    System.out.println(string);
    return;
}

このようなもの:

public static void main(String[] args) {  

    Scanner kb = new Scanner(System. in );
    System.out.println("Entre String");
    String string = kb.nextLine();

    //System.out.println(string);           
    int length = string.length();
    if(length < 2) {
        System.out.println(string);
        return;
    }

    System.out.print(string.charAt(0));
    for (int i = 1; i < length; i++) {
        if (string.charAt(i) != string.charAt(i - 1)) {
            System.out.print(string.charAt(i));
          } 
    }
}
于 2013-05-01T15:22:30.443 に答える
0

for次のようにループを置き換えるだけです。

    System.out.print(string.charAt(0));
    for (int i = 1; i < length; i++) {
        if (string.charAt(i) != string.charAt(i - 1)) {
            System.out.print(string.charAt(i));
        }
    }

アイデアは、最初の文字を最初に印刷し、次にi番目の位置にある文字を印刷するというものです。ただし、前の文字と異なる場合に限ります。単純!

于 2013-05-01T16:06:37.960 に答える