javaを学習し始めで不明な個所がありますので、質問させていただきます。
4つの数値があり、それぞれを比較し2番目の最大値を取得するプログラムを作成したいと思っています。同じ最大値が複数ある場合は、その中での最大値から2番目(7,7,5,2)と入力された場合、「5」が出力されるプログラム
今、以下のようなものを作成しました。(可読性など考えるとよくない部分はあると思いますが…)
これを実行すると、すべての中の2番目(上記の場合、「7」となり同じ値が複数ある場合の結果と異なってしまいました。
どの辺を変えればよいかわかる方いましたらご教授お願いしたいと思います。
class TestSrc02 {
public static void main (String[] args) { System.out.println("{0,1,2,3}で2番目に大きい値は = " + theSecond(0,1,2,3)); System.out.println("{2,-1,7,2}で2番目に大きい値は = " + theSecond(2,-1,7,2)); System.out.println("{5,5,5,5}で2番目に大きい値は = " + theSecond(5,5,5,5)); System.out.println("{3,9,2,6}で2番目に大きい値は = " + theSecond(3,9,2,6)); System.out.println("{9,8,0,4}で2番目に大きい値は = " + theSecond(9,8,0,4)); } public int theSecond (int a, int b, int c, int d) { int seiretsu[] = new int[4]; int max1 = max(a, b); int max2 = max(c, d); int min1 = min(a, b); int min2 = min(c, d); seiretsu[3] = max(max1, max2); if (max1 <= max2) { seiretsu[2] = max(max1, min2); } else { seiretsu[2] = max(min1, max2); } return seiretsu[2]; } private int max(int x, int y){ if (x < y) { return y; } else { return x; } } private int min(int x, int y){ if (x > y) { return y; } else { return x; } }
}
-----------------------------------------------///
また、staticについてもtheSecondメソッドではつけないようにすることとありましたが、外すとコンパイルエラーとなってしまうためどのようにすべきかご教授いただければと思います。
回答5件
あなたの回答
tips
プレビュー