Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Java (https://forum.zone-game.info/forumdisplay.php?f=126)
-   -   функция которая вычисляет минимум из трёх чисел (https://forum.zone-game.info/showthread.php?t=33362)

desolator 04.01.2014 20:18

Re: функция которая вычисляет минимум из трёх чисел
 
Цитата:

Сообщение от Lihoy (Сообщение 343838)
Таким образом, если b < c, то m = b, иначе m = c, независимо от всех предыдущих операторов if.

Даже, если а минимальное, то твой вариант будет выбирать итоговый результат только между b и с.

То есть, необходимо написать после каждой проверки if - else? Либо вообще не использовать else?

Lihoy 04.01.2014 21:13

Re: функция которая вычисляет минимум из трёх чисел
 
Цитата:

Сообщение от desolator (Сообщение 343928)
То есть, необходимо написать после каждой проверки if - else? Либо вообще не использовать else?

Различные вариации корректных вариантов уже представлены в этой теме.

Простейший - использование условного оператора совместно с логическими.

 
if (a < b && a < c)
  m = a;
else if (b < a && b < c)
  m = b;
else
  m = c;
 
Code: Java
Updated.
К слову, можно даже немного упростить.

 
if (a < b && a < c)
  m = a;
else if (b < c)
  m = b;
else
  m = c;
 
Code: Java
Если в первом if'e результат false, значит а - не минимальное, следовательно дальнейшее сравнение с ним не имеет смысла.

Marat123 19.09.2014 18:48

Re: функция которая вычисляет минимум из трёх чисел
 
Цитата:

Сообщение от desolator (Сообщение 343593)
http://javarush.ru/course.html не знаю какая магия там происходит но как то судит, в моем случае вердикт - ответ не верен.

public static int min(int a, int b, int c, int d)
{
int m4=0;
if (a<b)
m4=a;
else
{
m4=b;
}

if (m4>c)
m4=c;

if (m4>d)
m4=d;


return m4;
}

Mifesto 19.09.2014 19:22

Re: функция которая вычисляет минимум из трёх чисел
 
    public static int min(int a, int b, int c, int d)
    {
        if(a == b && a == c && a == d)
            return 0;
 
        int min = a < b ? a : b;
 
        min = min < c ? min : c;
        min = min < d ? min : d;
 
        return min;
    }
Code: Java

L2CCCP 19.09.2014 23:13

Re: функция которая вычисляет минимум из трёх чисел
 
А не легче ли создать метод вычисления минимального и максимального числа в массиве?
можно обрабатывать сколько угодно чисел и всегда получим верный ответ.

 
public class ZGMinMaxTest
{
	public static void main(String[] args)
	{
		final int[] numbers = new int[] { 19, 52, 36, 74, 524, 16, 57, 238, 924 };
 
		int minimal = Integer.MAX_VALUE;
		int maximal = Integer.MIN_VALUE;
		for(int number = 0; number < numbers.length; ++number)
		{
			int current = numbers[number];
			if(current < minimal)
				minimal = current;
			else if(current > maximal)
				maximal = current;
		}
 
		System.out.println("Minimal is -> " + minimal);
		System.out.println("Maximal is -> " + maximal);
	}
}
 
Code: Java
 
Result:
Minimal is -> 16
Maximal is -> 924
 
Code: HTML
или используйте класс математики

 
public class ZGMathTest
{
	public static void main(String[] args)
	{
		final int[] numbers = new int[] { 19, 52, 36, 74, 524, 16, 57, 238, 924 };
 
		int minimal = Integer.MAX_VALUE;
		int maximal = Integer.MIN_VALUE;
		for(int number = 0; number < numbers.length; ++number)
		{
			int current = numbers[number];
			minimal = Math.min(minimal, current);
			maximal = Math.max(maximal, current);
		}
 
		System.out.println("Minimal is -> " + minimal);
		System.out.println("Maximal is -> " + maximal);
	}
}
 
Code: Java
 
Result:
Minimal is -> 16
Maximal is -> 924
 
Code: HTML

Zubastic 19.09.2014 23:52

Re: функция которая вычисляет минимум из трёх чисел
 
А нахрена цикл? Загружаем все числа в список и вычисляем с помощью встроенной команды, ну на шарпе это точно можно сделать, на яве скорее всего тоже.

L2CCCP 20.09.2014 00:07

Re: функция которая вычисляет минимум из трёх чисел
 
Цитата:

Сообщение от Zubastic (Сообщение 375450)
А нахрена цикл? Загружаем все числа в список и вычисляем с помощью встроенной команды, ну на шарпе это точно можно сделать, на яве скорее всего тоже.

Можно и коллекцию использовать, без разницы на самом деле, я к тому что те примеры что писали до этого являются ограниченными по функционалу .
 
import java.util.ArrayList;
import java.util.List;
 
public class ZGCollectionMathTest
{
	public static void main(String[] args)
	{
		List<Integer> numbers = new ArrayList<Integer>();
		numbers.add(45);
		numbers.add(312);
		numbers.add(4);
		numbers.add(456);
		numbers.add(987);
		numbers.add(24);
 
		int minimal = Integer.MAX_VALUE;
		int maximal = Integer.MIN_VALUE;
		for(int number : numbers)
		{
			minimal = Math.min(minimal, number);
			maximal = Math.max(maximal, number);
		}
 
		System.out.println("Minimal is -> " + minimal);
		System.out.println("Maximal is -> " + maximal);
	}
}
 
Code: Java
 
Result:
Minimal is -> 4
Maximal is -> 987
 
Code: HTML
или отсортировать коллекцию компаратором и получить минимальный и максимальный параметр
 
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
 
public class ZGCollectionComparatorTest
{
	public static void main(String[] args)
	{
		List<Integer> numbers = new ArrayList<Integer>();
		numbers.add(45);
		numbers.add(312);
		numbers.add(4);
		numbers.add(456);
		numbers.add(987);
		numbers.add(24);
 
		Integer[] sorted = numbers.toArray(new Integer[numbers.size()]);;
		Arrays.sort(sorted, new Comparator<Integer>(){
			@Override
			public int compare(Integer o1, Integer o2)
			{
				return (int) (o2 - o1);
			}
		});
 
		System.out.println("Minimal is -> " + sorted[sorted.length - 1]);
		System.out.println("Maximal is -> " + sorted[0]);
	}
}
 
Code: Java
 
Result:
Minimal is -> 4
Maximal is -> 987
 
Code: HTML
Использовать можно как угодно :student:

Zubastic 20.09.2014 00:35

Re: функция которая вычисляет минимум из трёх чисел
 
Цитата:

Сообщение от L2CCCP (Сообщение 375454)
 
		for(int number : numbers)
		{
			minimal = Math.min(minimal, number);
			maximal = Math.max(maximal, number);
		}
 
Code: Java

Я вот про это.

L2CCCP 20.09.2014 01:02

Re: функция которая вычисляет минимум из трёх чисел
 
Цитата:

Сообщение от Zubastic (Сообщение 375458)
Я вот про это.

я уже увидел :)
не успел отредактить
upd:
или отсортировать коллекцию компаратором и получить минимальный и максимальный параметр

 
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
 
public class ZGCollectionComparatorTest
{
	public static void main(String[] args)
	{
		List<Integer> numbers = new ArrayList<Integer>();
		numbers.add(45);
		numbers.add(312);
		numbers.add(4);
		numbers.add(456);
		numbers.add(987);
		numbers.add(24);
 
		Integer[] sorted = numbers.toArray(new Integer[numbers.size()]);;
		Arrays.sort(sorted, new Comparator<Integer>(){
			@Override
			public int compare(Integer o1, Integer o2)
			{
				return (int) (o2 - o1);
			}
		});
 
		System.out.println("Minimal is -> " + sorted[sorted.length - 1]);
		System.out.println("Maximal is -> " + sorted[0]);
	}
}
 
Code: Java
 
Result:
Minimal is -> 4
Maximal is -> 987
 
Code: HTML

n3k0nation 20.09.2014 01:11

Re: функция которая вычисляет минимум из трёх чисел
 
va_list inside

Код:

public int max(int...n) {
  int result = Integer.MIN_VALUE;
  for(int i : n) result = Math.max(result, i);
  return result;
}

OFMG. Зачем вам коллекции тут? Коллекции, сортировки... Наркоманы? :eb:


Текущее время: 09:10. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot