2016-11-21 2 views
2

Я здесь новый и Я должен написать код, который может найти самый большой из 5 номеров, которые ставят пользователя. Я что-то пишу, но он не работает. Может кто-нибудь мне помочь? Благодаря!код, который может найти самый большой из 5 номеров

public static void main(String[] args) { 
    // import java.lang.Math; 
    Scanner keyboard = new Scanner(System.in); 
    System.out.println("Please input 5 integers: "); 
    int x = Integer.parseInt(keyboard.nextLine()); 
    int y = Integer.parseInt(keyboard.nextLine()); 
    int z = Integer.parseInt(keyboard.nextLine()); 
    int m = Integer.parseInt(keyboard.nextLine()); 
    int n = Integer.parseInt(keyboard.nextLine()); 
    int max = Math.max(x,y); 

    if (x>y && x>z && x>m && x>n) 
     System.out.println ("The first of your numbers is the bigest"); 

    else if(y>x && y>z && y>m && y>n) 
     System.out.println ("The second of your numbers is the bigest"); 

    else if (z>x && z>y && z>m && z>n) 
     System.out.println ("The third of your numbers is the bigest"); 

    else if (m>x && m>y && m>z && m>n) 
     System.out.println ("The fourth of your numbers is the bigest"); 

    else if (n>x && n>y && n>z && n>m) 
     System.out.println ("The fifth of your numbers is the bigest"); 




    System.out.println("The max of three is: " + max); 
+1

Я предполагаю, что вы намерены назначить 'max = ...' в условиях, например 'max = x;' в первом. Обратите внимание, что вам также необходимо обработать случай, когда два (или более) из них равны и наибольшие. –

+0

Можете ли вы использовать «Список '? – bradimus

+0

Вы хотите использовать '> =' вместо '>'. – flakes

ответ

2

Collections Пусть класс делает это для вас :)

List<Integer> list = Arrays.asList(x,y,z,m,n); 
int max = Collections.max(list).intValue(); 
System.out.println("And the winner is: " + max); 

Если вы хотите найти также позицию в коллекции вы должны сделать следующим образом:

int index = list.indexOf(max); 
String[]position={"first","second","third","fourth","fifth"}; 
System.out.println("The "+position[index]+" of your numbers is the bigest"); 
+1

Вы также должны показать OP, как найти индекс наибольшего значения – flakes

+0

сделано, спасибо;) – user6904265

0

Вы только найдите максимум x и y и напечатайте его в конце. Вы должны назначать новые значения max в каждом условии (в операторах if-else if). Например, в первом условии, если x больше y, z, m и n, вы должны назначить x max.

0

Хотя это можно ответить Collections.max() это выглядит как домашнее задание, которое, вероятно, ищет более орехи-и-болты приближается такие как ....

int [] array = {x, y, z, m , n}; 

int largest = x; 
int index = 0; 
for (int i = 0; i < array.length; i++) { 
    if (array[i] > largest) { 
     largest = array[i]; 
     index = i; 
    } 
} 
System.out.println("Largest found at index " + index); 
0

Я вижу, что у вас есть используется Math.max(), что означает, что вам разрешено использовать его, и вы можете в полной мере использовать его. В случае, если вы не можете использовать массив или другие структуры данных, вы можете рассмотреть это:

Чтобы получить максимум 5 номеров, вы можете сделать это:

int largest = Math.max(Math.max (Math.max(x,y), Math.max(m,n)), z); 

Для печати позиции крупнейший:

String pos = ""; 
switch(largest){ 
    case x: pos = "first"; 
      break; 
    case y: pos = "second"; 
      break; 
    case z: pos = "third"; 
      break; 
    case m: pos = "forth"; 
      break; 
    case n: pos = "fifth"; 
      break; 
}; 

System.out.println ("The " + pos " + of your numbers is the biggest"); 
Смежные вопросы