2017-10-10 10 views
1

一般的な配列の中で最小の要素を見つけるのにうまく機能する方法があります。しかし、私は同じメソッドを試してみても少し違いますが、実行するたびに0を返します。理由はわかりません。一般的な配列メソッド、整数、文字列、文字で最大の要素を見つける

私はこの問題を以下のこのメソッドの近くに見えるように解決する方法をご希望です。私はGeneric.maxをインポートしたり、コレクションを使用したりしたくないので、私は以下のようなもっと原始的な方法でそれをやりたいのです。

以下のような方法で最大値を見つけるにはどうすればよいですか? < 0を> 0に変更しようとすると機能しません。どのように私はこの最小の方法を最大の方法にすることができますか?

public static <E extends Comparable<E> > int getSmallesElement(E[] list) { 
     int minIndex = 0; 
     // Iterate from i+1 ti i-1 
     for (int index = minIndex + 1; index <= list.length - 1; index++) { 
      minIndex = (list[index].compareTo(list[minIndex]) < 0)? index : minIndex; 
     }// end for 

     return minIndex; 
    }// end getSmallest method 

私が最初の方法のように条件付きを使うことができればいいと言っていました。私はジェネリックスには新しく、これらのメソッドをInteger、String、Characterの配列で動作させようとしています。

ありがとうございます。

+0

'maxIndex = maxIndex;' ... – Amit

+0

Generic.maxとは? – shmosel

+0

あなたのコードによれば、要素が1つしかない配列の最小/最大インデックスはどうなりますか?要素のない配列の –

答えて

0

ifステートメントとして条件式を書き換えましたが、正しく実行しませんでした。index = maxIndexの代わりにmaxIndex = indexが必要です。

むしろifの両方のブランチ内の各反復でmaxIndexを割り当てるよりも、あなただけの「真の」ブランチにそれを割り当てることができ、かつ完全に「偽」ブランチをドロップ:あなたがリセットしている

for(int index = maxIndex + 1; index <= list.length -1; index++) { 
    if (list[maxIndex].compareTo(list[index]) < 0) { 
     maxIndex = index; 
    } 
} 
0

をループとしてindexが行くだけではなくmaxIndexを設定:

public static <E extends Comparable<E> > int getLargestElement(E[] list) { 
    int maxIndex = 0; 
    for(int index = 1; index <= list.length -1; index++) { 
     if (list[index].compareTo(list[maxIndex]) > 0) { 
      maxIndex = index; 
     } 
    } 
    return maxIndex; 
} 
+0

理由はわかりませんが、まだ返っています0 –

+0

このスニペットはうまくいくはずです。あなたが観測した入力を「0」と共有してください。 – Mureinik

-1

私は最終的に働いていた何かを発見しました。

public static <E extends Comparable<E> > E getLargestElement(E[] list) { 
     E max = list[0]; // set first value in array as current max 
     for(int i = 1; i < list.length; i++) { 
      if(list[i].compareTo(max) > 0) { 
       max = list[i]; 
      } 
     }// end for 
     return max; 
    } 

他の回答と私が使用しようとしていた方法が0を返し続けている理由を誰かに説明できますか?それは私には響きました。答えもそうでしたが、うまくいきませんでした。

関連する問題