私はJava Shildt The Completeのリファレンスを読んでいますが、コードの一部が非常にシンプルに見えますが、どのように動作するのか理解できません。MinMaxリターンメカニックス。このShildtのコード例はどのように機能しますか?
// A generic interface example.
// A Min/Max interface.
interface MinMax<T extends Comparable<T>> {
T min();
T max();
}
// Now, implement MinMax
class MyClass<T extends Comparable<T>> implements MinMax<T> {
T[] vals;
MyClass(T[] o) {
vals = o;
}
// Return the minimum value in vals.
public T min() {
T v = vals[0];
for (int i = 1; i < vals.length; i++)
if (vals[i].compareTo(v) < 0) v = vals[i];
return v;
}
// Return the maximum value in vals.
public T max() {
T v = vals[0];
for (int i = 1; i < vals.length; i++)
if (vals[i].compareTo(v) > 0) v = vals[i];
return v;
}
}
class GenIFDemo {
public static void main(String args[]) {
Integer inums[] = {3, 6, 2, 8, 6};
Character chs[] = {'b', 'r', 'p', 'w'};
MyClass<Integer> iob = new MyClass<Integer>(inums);
MyClass<Character> cob = new MyClass<Character>(chs);
System.out.println("Max value in inums: " + iob.max());
System.out.println("Min value in inums: " + iob.min());
System.out.println("Max value in chs: " + cob.max());
System.out.println("Min value in chs: " + cob.min());
}
}
//The output is shown here:
//Max value in inums: 8
//Min value in inums: 2
//Max value in chs: w
//Min value in chs: b
私はこの1つ、その出力理解することができない:出力条件に応じた場合、8なぜ、 ヴァルスを
// Return the maximum value in vals.
public T max() {
T v = vals[0];
for (int i = 1; i < vals.length; i++)
if (vals[i].compareTo(v) > 0) v = vals[i];
return v;
}
を[1] .compareTo(ヴァルス[0]> 0は既に真である)(6> 3)、
ので、V = 6、8ない
ここで最大値と最小値がどのように求められるのか理解できません。
説明できますか?ありがとう!
ループがあります。成功しただけでは止まらず、代わりに 'val'を置き換え、' vals'に含まれるすべての項目をチェックします。 –
はい、しかし、条件を真にしている項目で作業条件を見つけることができます。最大値ではありません –
このアルゴリズムでは、 'v'は常に「最大まで」です。あなたの場合。それは8になるまで6になります。それが起こると、 'v 'は8になり、' v.compareTo(vals [i])> 0'チェックで十分なアイテムが他にないので変更されません。 –