كيفية العثور على ثاني أكبر رقم باستخدام الماسح الضوئي وللحلقة (بدون صفيف)
-
21-09-2019 - |
سؤال
لذلك يمكنني بسهولة إنجاز المهمة للعثور على أكبر عدد ، ثم إذا كان من الممكن تقسيمها على ثلاثة ، طباعة. ولكن لا تعرف كيفية العثور على ثاني أكبر رقم من تسلسل المستخدمين. شكرا على أي تلميحات!
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);
}
}
لا تنتمي إلى StackOverflow