-1

だから私は簡単に最大数を見つけるタスクを実行し、3で割ることができる場合は印刷することができます。しかし、ユーザーシーケンスから2番目に大きい数を見つける方法がわかりません。ヒントをありがとう!

public class SecondLargest {

    public static void main(String[] args) {
        int max = 0;
        Scanner scan = new Scanner(System.in);
        System.out.println("How many numbers?");
        int n = scan.nextInt();

        System.out.println ("Write numbers: ");
        for(int i=0; i<n; i++){
            int c = scan.nextInt();
            if(c>=max && c%3 == 0){
                max = c;
                }
            else
                System.out.println("There is no such number.");



        }
        System.out.println(max);
    }
}
4

3 に答える 3

2
int secondLargest = 0;
.....
for (..) {
   ....
   if (c % 3 == 0) {
       if (c >= max) {
           secondLargest = max;
           max = c;
       }
       if (c >= secondLargest && c < max) {
           secondLargest = c;
       }
   }
   ....
}
于 2009-12-29T17:03:34.237 に答える
2

1 つは最大値用、もう 1 つは second_maximum 用の 2 つの変数を保持し、適切に更新するだけです。

より一般的なアプローチについては、選択アルゴリズムをご覧ください

于 2009-12-29T17:03:58.640 に答える