2016-08-30 3 views
1
package variousprograms; 
import java.util.*; 
public class InputStats 
{ 
    public static void main(String[] args) 
    { 
     Scanner input = new Scanner(System.in); 
     int a; 
     int b; 
     int c; 
     int d; 
     int e; 

     System.out.println("First Integer "); 
     a = input.nextInt(); 
     System.out.println("Second Integer "); 
     b = input.nextInt(); 
     System.out.println("Third Integer "); 
     c = input.nextInt(); 
     System.out.println("Fourth Integer "); 
     d = input.nextInt(); 
     System.out.println("Fifth Integer "); 
     e = input.nextInt(); 

     System.out.println("Maximum is " + Math.max(Math.max(Math.max(Math.max(a,b), c), d), e)); 
     System.out.println("Minimum is " + Math.min(Math.min(Math.min(Math.min(a,b), c), d), e)); 
     System.out.println("Mean is " + (a + b + c + d + e)/5.0);  
    } 
} 

Я написал этот код, чтобы найти минимальный, максимальный и средний набор из пяти целых чисел, используя пять переменных для каждого целого. Проблема в том, что я должен использовать четыре переменные вместо пяти, и я не могу использовать управляющие инструкции, такие как if или loop.минимум целых чисел

Как мне изменить код, который я уже написал?

+2

Это выглядит как проблема домашних заданий. Ваш инструктор считает, что тернарный оператор является контрольным заявлением? – vallismortis

+0

Я не могу использовать тройные операторы – TheLegend

+0

Это смешная проблема. [Math.max] (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/Math.java#Math.max%28int%2Cint % 29) использует тернарный оператор: 'public static long max (long a, long b) {return (a> = b)? a: b; } '. – vallismortis

ответ

1

Вы можете сделать это с помощью переменных для текущего ввода, min, max и total. Просто продолжайте повторно использовать одну и ту же переменную для ввода и обновите остальные три переменные, прежде чем вы получите следующий ввод от пользователя.

Для отслеживания максимального значения без если заявления, вы должны сделать что-то вроде:

max = Math.max(max, input); 

И что-то подобное для минимального значения.

+0

Так будут ли переменные: input, min, max и total? – TheLegend

+0

@ P.Icker Да. После первого ввода вы можете просто установить min, max и total, равное первому введенному значению. После второго ввода вы должны обновить каждый из этих трех с новым значением и так далее. –

+0

Не могли бы вы опубликовать код? Это было бы полезно! – TheLegend

0

Вам не нужно хранить входы больше, чем необходимо, просто хранить результаты, как вы идете:

public static void main(String[] args) 
{ 
    Scanner input = new Scanner(System.in); 
    int min; 
    int max; 
    long total; 
    int val; 

    System.out.println("First Integer "); 
    val = input.nextInt(); 
    min = val; 
    max = val; 
    total = val; 

    System.out.println("Second Integer "); 
    val = input.nextInt(); 
    min = Math.min(val, min); 
    max = Math.max(val, max); 
    total += val; 

    System.out.println("Third Integer "); 
    val = input.nextInt(); 
    min = Math.min(val, min); 
    max = Math.max(val, max); 
    total += val; 

    System.out.println("Fourth Integer "); 
    val = input.nextInt(); 
    min = Math.min(val, min); 
    max = Math.max(val, max); 
    total += val; 

    System.out.println("Fifth Integer "); 
    val = input.nextInt(); 
    min = Math.min(val, min); 
    max = Math.max(val, max); 
    total += val; 

    System.out.println("Maximum is " + max); 
    System.out.println("Minimum is " + min); 
    System.out.println("Mean is " + total/5.0); 
} 
+0

Можно ли это сделать без утверждений? – TheLegend

+0

@ P.Icker конечно. Ред. – Jason

+0

Что такое код без операторов if? – TheLegend

Смежные вопросы