Подтвердить что ты не робот

Как найти максимальное значение множества переменных

Мне было интересно, сможет ли кто-нибудь помочь мне найти максимальное значение набора переменных и назначить их другой переменной. Вот фрагмент моего кода, который может помочь понять, о чем я говорю.

// Ask for quarter values.
    System.out.println("What is the value of the first quarter?");
    firstQuarter = input.nextDouble();

    System.out.println("What is the value of the second quarter?");
    secondQuarter = input.nextDouble();

    System.out.println("What is the value of the third quarter?");
    thirdQuarter = input.nextDouble();

    System.out.println("What is the value of the fourth quarter?");
    fourthQuarter = input.nextDouble();

    //Tell client the maximum value/price of the stock during the year.     
    //maxStock = This is where I need help 
    System.out.println("The maximum price of a stock share in the year is: $" + maxStock + ".");
4b9b3361

Ответ 1

В Java вы можете использовать Math.max следующим образом:

double maxStock = Math.max( firstQuarter, Math.max( secondQuarter, Math.max( thirdQuarter, fourthQuarter ) ) );

Не самый элегантный, но он будет работать.

В качестве альтернативы для более надежного решения определите следующую функцию:

private double findMax(double... vals) {
   double max = Double.NEGATIVE_INFINITY;

   for (double d : vals) {
      if (d > max) max = d;
   }

   return max;
}

Коды вы можете позвонить по:

double maxStock = findMax(firstQuarter, secondQuarter, thirdQuarter, fourthQuarter);

Ответ 2

Один метод для их правильного управления

public static <T extends Comparable<T>> T max(T...values) {
    if (values.length <= 0)
        throw new IllegalArgumentException();

    T m = values[0];
    for (int i = 1; i < values.length; ++i) {
        if (values[i].compareTo(m) > 0)
            m = values[i];
    }

    return m;
}

Ответ 3

С примитивными переменными лучший выбор может быть с массивами или коллекциями:

Массивы:

double [ ] data = { firstQuarter , secondQuarter , thirdQuarter , fourtQuarter ) ;
Arrays . sort ( data ) [ 3 ] ;

Коллекции:

List<Double> data = new Arraylist<Double>();
data.add(firstQuarter);
data.add(secondQuarter);
data.add(thirdQuarter);
data.add(foutQuarter);
Collections.sort(data);
data.get(3);

И если вы работаете с объектами, вы можете использовать Коллекции со компаратором:

class Quarter {
    private double value;
    private int order;

    // gets and sets
}

И чтобы получить максимальное значение:

List<Quarter> list = new ArrayList<Quarter>();
Quarter fisrt = new Quarter();
first.setValue(firstQuarter);
first.setOrder(1);
list.add(first);
// Do the same with the other values
Collections.sort(list, new Comparator<Quarter>(){
    compare(Object o1, Object o2){
        return Double.valueOf(o1.getValue()).compareTo(o2.getValue());
    }
}

Это может быть более сложным, но если вы работаете с объектами, я думаю, что лучше работать.

Ответ 4

double [ ] data = { firstQuarter , secondQuarter , thirdQuarter , fourtQuarter ) ;
Arrays . sort ( data ) [ 3 ] ;

Ответ 5

Немного поздно для вечеринки, но для кого-либо другого, рассматривающего этот вопрос, java 8 имеет примитивные типы потоков, которые реализуют именно этот

Collection<Integer> values = new ArrayList<>();
OptionalInt max = values.stream().mapToInt((x) -> x).max();

mapToInt - ключевая функция, которая описывает, как преобразовать ввод в целочисленный тип. Результирующий поток затем имеет дополнительные агрегаторы и коллекторы, специфичные для целочисленных типов, один из которых max().

Затем результат результата можно извлечь из OptionalInt, если операция прошла успешно

Ответ 6

Теперь я верю в Java 8, самая краткая версия будет выглядеть так:

DoubleStream.of(firstQuarter , secondQuarter , thirdQuarter , fourtQuarter).max();

Ответ 7

Max = firstQuarter;
If(secondQuarter > max)
   Max = secondQuarter;

... И так далее

Ответ 8

import java.util.Scanner;


public class dmar {

public static void main ( String  []  srgs){

    Scanner dmar=new Scanner(System.in);{

        {

System.out.println ( "inter number of x  plz") ;

double x=dmar.nextDouble();

System.out.println ( "inter number of y plz") ;{


double y=dmar.nextDouble();

System.out.println ( "inter number of t  plz") ;
double t=dmar.nextDouble();

System.out.println ( "inter number of f  plz") ;
double f=dmar.nextDouble();

{

{
if (x>y);

System.out.println("x biger than y");


if (x>t);
System.out.println("x biger than t");

 if (x>f);

System.out.println("x biger than f");


 if (y>x);
System.out.println("y biger than x");



if (y>t);
System.out.println("y biger than t");

 if (y>f);
System.out.println("y biger than f");

if (t>x&t>f&t>y);
System.out.println("t biger than x");

if (t>y);
System.out.println("t biger than y");

if (t>f);
System.out.println("t biger than f");

 if (f>x);
System.out.println("f biger than x");


if (f>y);
System.out.println("f biger than y");


         if (f>t);
System.out.println("f biger than t");

}