كيفية العثور على ثاني أكبر رقم باستخدام الماسح الضوئي وللحلقة (بدون صفيف)

StackOverflow https://stackoverflow.com/questions/1975669

سؤال

لذلك يمكنني بسهولة إنجاز المهمة للعثور على أكبر عدد ، ثم إذا كان من الممكن تقسيمها على ثلاثة ، طباعة. ولكن لا تعرف كيفية العثور على ثاني أكبر رقم من تسلسل المستخدمين. شكرا على أي تلميحات!

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);
    }
}
هل كانت مفيدة؟

المحلول

int secondLargest = 0;
.....
for (..) {
   ....
   if (c % 3 == 0) {
       if (c >= max) {
           secondLargest = max;
           max = c;
       }
       if (c >= secondLargest && c < max) {
           secondLargest = c;
       }
   }
   ....
}

نصائح أخرى

تحتاج فقط إلى الاحتفاظ بمتغيرين ، أحدهما للأقصى والآخر لـ Second_Maximum وتحديثهما بشكل مناسب.

للحصول على نهج أكثر عمومية ، ألق نظرة على خوارزميات الاختيار

Below code will work

import java.util.Scanner;

public class Practical4 {
    public static void main(String a[]) {
        int max = 0, second_max = 0, temp, numbers;
        Scanner scanner = new Scanner(System.in);
        System.out.println("How many numbers do you want to enter?");
        numbers = scanner.nextInt();
        System.out.println("Enter numbers:");
        for (int i = 0; i < numbers; i++) {
            if (i == 0) {
                max = scanner.nextInt();
            } else {
                temp = scanner.nextInt();
                if (temp > max) {
                    second_max = max;
                    max = temp;
                }
                else if(temp>second_max)
                {
                 second_max=temp;
                }
            }
        }
        scanner.close();
        System.out.println("Second max number is :" + second_max);
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top