2016-10-05 36 views
-2

私が問題としているのはuniでのラボの仕事に関する質問です。ここからどこへ行くかについての指針です。アルファベット順に、質問はコードスニペットを与えている、そしてそれから、私たちは、配列の最初と最後の要素を取得する必要があります:Java配列。アルファベット順の文字列配列から最初の単語を取得します

public class NamesTest { 
    public static void main(String[] args){ 
    // values hard-coded to facilitate testing 
    String[] names = {"john", "mary", "andy", "beth", "chris", 
         "frank", "carol", "bob", "sue", "joe"};  
    System.out.println("first: " + getFirstAlphabetically(names)); 
    System.out.println("last: " + getLastAlphabetically(names));  
    } 
} 

予想される出力:最初

:アンディ
最後:

を訴えます
+2

'文字列firstAlphabetically = Collections.min(は、Arrays.asList(名前));'。 –

+1

'Comparable'について知っていますか? 'コンパレータ'? 'Arrays.sort'? **制約は何ですか**? Java開発者のための一行の答えがあります([Andyのコメント](https://stackoverflow.com/questions/39876189/java-arrays-getting-the-first-word-from-an-array-of-strings-アルファベット順#comment67039055_39876189))、まだJDKの機能を使用していない学生の場合、50行の回答があります。私たちにあなたのレベル/期待を与えずに助けを求めるだけでは大いに役に立たない。 –

+0

こんにちは。これらは単純な文字列なので、['Arrays.sort()'](https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#sort(java.lang) 。Object []))を使って 'names'配列をソートし、そこから最初の項目を取得します。 –

答えて

1

Stringは、Comparable<String>を実装しています。この順序は、辞書順(略英字ですが、単なるアルファベット文字以上です)です。このように

Collections.min(collectionOfStrings) 

は、コレクション内の辞書順で、最初の文字列を返します。

しかし、あなたはを使ってList(これはCollectionです)に変換することができます。

一緒にそれを置く:

String firstAlphabetically = Collections.min(Arrays.asList(names)); 

を同様に、あなたはアルファベット順に最後の文字列を取得するためにCollections.maxを使用することができます。


またCollectionsなしや並べ替え、それを行うことができます。

String firstAlphabetically = names[0]; 
for (String name : names) { 
    if (name.compareTo(firstAlphabetically) < 0) { 
    firstAlphabetically = name; 
    } 
} 

これはO(n)時間で実行され、ソートがO(n log n)であるのに対し、入力を変更しないと、いずれかのコピーまたは変更する必要があり入力配列

0

私はこれがエントリーレベルのコースであると仮定しています。この前提に基づいて、彼らが目指しているアプローチは、自分で配列をソートし、ソートされた配列の最初と最後のインデックスを取得することだと思います。組み込みのJavaライブラリを使用できない場合は、バブルソートのようなアルゴリズムを実装して配列を注文します。 CompareToメソッドを使用して2つのStringを比較できます。

+0

それはそういうことですが、実際にはまだバブルに至っていません。それはモジュールの後半です。私は大学2年生で、しばらくのうちにjavaを実践していません私は錆びます。 –

+0

String CompareToメソッドを使用しましたか?バブルソートを正確に実装する必要はありません。 CompareToを使って配列をソートする方法を見つける必要があると思います(バブルソートを実装するのは簡単な方法です)。 –

+0

はい、それはおそらく彼が私たちから望むものでしょう。 –

1

Arrays.sort()を使用して、文字列配列namesをソートし、最初の項目を取得できます。このような

何か:

String[] names = {"john", "mary", "andy", "beth", "chris", 
        "frank", "carol", "bob", "sue", "joe"};  
Arrays.sort(names); 
String alphabeticallyFirst = names[0]; 
String alphabeticallyLast = names[names.length - 1]; 
関連する問題