4

4 つの異なる文字列を入力し、アルファベット順に出力する必要があるクラスのプロジェクトがあります。

これまでのところ、私はこれを持っています:

String wd1, wd2, wd3, wd4;
    Scanner scan1 = new Scanner(System.in);

    System.out.println ("Type Word One: ");
    wd1 = scan1.next();

    System.out.println ("Type Word Two: ");
    wd2 = scan1.next();

    System.out.println ("Type Word Three: ");
    wd3 = scan1.next();

    System.out.println ("Type Word Four: ");
    wd4 = scan1.next();

次を使用して、2 つの文字列のアルファベット順を取得できることを知っています。

int compare = wd1.compareTo(wd2);


    if (compare < 0)
    {System.out.println(wd1 + " " + wd2);}
    else {
        if (compare > 0)
        {System.out.println(wd2+ " " + wd1);}

4 つの弦すべてを正しい順序で並べるのに助けが必要です。これを行うには、配列ではなく if else ステートメントを使用することになっています。

どんな助けでも素晴らしいでしょう!

ありがとう

4

7 に答える 7

5
boolean swapped = false;
do {
  swapped = false;
  if (w2.compareTo(w1) < 0) {
    String tmp = w2;
    w2 = w1;
    w1 = tmp;
    swapped = true;
  }
  if (w3.compareTo(w2) < 0) {
    String tmp = w3;
    w3 = w2;
    w2 = tmp;
    swapped = true;
  }
  if (w4.compareTo(w3) < 0) {
    String tmp = w4;
    w4 = w3;
    w3 = tmp;
    swapped = true;
  }
} while (swapped)

System.out.println(w1);
System.out.println(w2);
System.out.println(w3);
System.out.println(w4);
于 2012-10-01T21:22:24.333 に答える
0

文字列をに入れてメソッドListを呼び出すのはどうですか?sort()

Java Stringクラスは、「Comparable」インターフェースを実装しているcompareTo()ため、文字列を順番に比較するメソッドがすでにあります。

于 2012-10-01T21:11:33.403 に答える
0

典型的な分割と同意の戦略を適用できます。マージソートについて考えて、最初の2文字列と最後の2文字列をソートし、その後マージ結果を取得します。

if(s2<s1) swap(s1,s2)
if(s4<s3) swap(s3,s4)

if(s1<s3) {
  print(s1)
  if(s2<s3){
    print(s2)
    print(s3)
    print(s4)
  } else {
    print(s3)
    if(s2<s4){
      print(s2)
      print(s4)
    } else {
      print(s4)
      print(s2)
    }
  }
} else {
  print(s3)
  if(s4<s1){
    print(s4)
    print(s1)
    print(s2)
  } else {
    print(s1)
    if(s4<s2){
      print(s4)
      print(s2)
    } else {
      print(s2)
      print(s4)
    }
  }
}
于 2012-10-04T16:11:10.137 に答える
0

探しているものを実行する最も簡単な方法は、それらをリストに入れ、次に list.sort() を使用してそれらを並べ替えることです。

于 2012-10-01T21:09:40.017 に答える
0

配列やその他のデータ構造と並べ替えアルゴリズムを使用できないため、いくつかのifステートメントを使用して手動で行う必要があります。コードを書く前に、これを手作業で行うことをお勧めします。単語を 4 つ挙げるとしたら、アルファベット順で最初の単語をどのように判断しますか? 二番目?立ち止まるな; これを行う方法を言葉で説明できれば、Java への変換は簡単です。

編集:

現時点では、ASCII コードやコンピュータ関連のことは気にしないでください。compareTo()ただし、一度に2つの単語しか比較できない詳細を考慮する必要があると思います. wd1では、選択しwd2て比較するとしましょう。この 2 つの「言葉」を比較すると、どのような結果が得られるでしょうか。それぞれの場合、次に何をしますか?

別の編集:

コメントで議論した後、ここでのアルゴリズムは次のようなものであることがわかります (疑似コード):

if wd1 comes before wd2
    if wd1 comes before wd3
        if wd1 comes before wd4
            print out wd1 // wd1 is the first word in alphabetical order
        else
            print out wd4 // wd4 is the first word in alphabetical order
    else
        // Details left as an exercise to the reader
else
    // Details left as an exercise to the reader

ここに示されているのと同じパターンに従って、最初に英語で else ステートメントの入力を完了します。これが完了すると、Java でのコードの記述は非常に簡単になります。

ご覧のとおり、「概念を理解する」だけでは、コードを書き始めるには十分ではありません。時間をかけて、耐え難いほどの詳細をすべて把握する必要があります。多くの場合、コードを書き始める前に、ペンと紙 (またはワード プロセッサ) を使用して手順を英語で書き出すのに役立ちます。(もちろん、母国語の方が簡単な場合は、母国語を使用することもできます。ポイントは、コンピューターに飛び乗って最初から Java コードを書き始めないことです。特に行き詰まった場合はそうです。)

手順を母国語で記述できると、Java への翻訳が容易になります。時々それは些細なことです。また、自然言語による説明では考慮されていない詳細に出くわすこともあります。次に、Java から離れて説明を修正してから、Java を続行します。

これは基本的に、コンピューター プログラムを作成しようとするときに使用するプロセスです。これらのアイデアのいくつかを独自のコーディングに適用できることを願っています。

于 2012-10-01T21:27:25.130 に答える
0

最初の文字列と残りの 3 つの文字列を比較して、アルファベット順で最初の文字列を見つける必要があります。その後、残りの 3 つなどを比較する必要があります。

于 2012-10-01T21:27:34.487 に答える