Java-программа для проверки прямоугольного треугольника
Источник: Mayankvikash В этой статье продемонстрирована разработка Java-программы для проверки треугольника на наличие в нем прямого угла. Прямоугольный треугольник — это треугольник, у которого один из внутренних углов равен 90 градусов. Есть несколько свойств прямоугольного треугольника; одно из них состоит в том, что квадрат гипотенузы равен сумме квадрата катетов (перпендикуляра и основания треугольника). Это называется теоремой Пифагора. Гипотенуза — самая длинная сторона треугольника.Логика программы
Поскольку квадрат гипотенузы равен сумме квадратов двух других сторон, нам нужно вычислить эту сумму. И если она равна квадрату гипотенузы, то треугольник прямоугольный. Скриншот программы:import java.util*;
public class RightAngledTriangle{
public static void main(String args[]){
Scanner in = new Scanner(System.in);
// code
}
}
Объявление переменных:
int h, p, b;
Запрос пользователя на ввод:
System.out.println("Enter the Hypotenuse");
h = in.nextInt();
System.out.println("Enter the Perpendicular");
p = in.nextInt();
System.out.println("Enter the Base");
b = in.nextInt();
Простой способ проверить, равен ли квадрат гипотенузы сумме квадратов перпендикуляра и основания, — использовать if-else.
Условие If-else:
if (h*h==(p*p)+(b*b)){
System.out.println("Right Angled Triangle");
}
else{
System.out.println("Not a right angled Traingle");
}Код
import java.util.*;
public class RightAngledTriangle {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int h, p, b;
System.out.println("Enter the Hypotenuse");
h = in.nextInt();
System.out.println("Enter the Perpendicular");
p = in.nextInt();
System.out.println("Enter the Base");
b = in.nextInt();
if (h*h==(p*p)+(b*b)){
System.out.println("Right Angled Triangle");
}
else{
System.out.println("Not a right angled Traingle");
}
}
}Вывод
Не прямоугольный треугольник:Создаем свой собственный алгоритм сортировки
Источник: Medium Благодаря этому руководству вы научитесь выполнять сортировку не только в порядке возрастания или убывания, но и на основе собственных параметров.//Например, у нас есть массив
Integer array[]={9,4,8,5,7,6,1,2,3};
//Сортируем по возрастанию
Arrays.sort(array);
//печатаем отсортированный массив
System.out.println(Arrays.toString(array));
//Сортируем по убыванию
Arrays.sort(array, Collections.reverseOrder());
//печатаем отсортированный массив
System.out.println(Arrays.toString(array));
Выход:
[1,2,3,4,5,6,7,8,9]
[9,8,7,6,5,4,3,2,1]
Arrays.sort(array) — это метод коллекций в Java для сортировки массива.
Если он используется без второго параметра, то сортировка происходит в порядке возрастания.
Во втором параметре мы можем определить Collections.reverseOrder() для сортировки в порядке убывания. Но нам нужно создать собственный алгоритм сортировки во втором параметре. Как это сделать?
Предположим, нам нужно упорядочить числа в массиве таким образом, чтобы при их объединении мы получили число, которое является наибольшим из всех чисел, с условием, что может быть изменена только позиция чисел, а не цифры в этом числе. Например:
{1,2,3,4}=>{4321}
{12,34}=>{3412}
{30,3}=>{330}
{8,89}=>{898}
В Java есть класс Comparator, в котором мы должны перегрузить функцию сравнения. Ее принцип работы состоит в том, что если два элемента появляются в порядке {item1, item2}, то они будут приняты функцией сравнения (comparator) вот так:
public int compare(item 1, item2){
}
Если функция выводит положительное значение, то функция сортировки поменяет местами элементы. То есть, вывод в коллекции будет {item2,item1}.
Если функция выводит отрицательный или нулевой результат, то порядок не изменится, вывод останется прежним: {item1,item2}.
Эта логика рекурсивно применима ко всем членам массива.
Итак, переходя к исходному вопросу, мы определим нашу логику в классе компаратора, перегрузив функцию compare() следующим образом:
Collections.sort(A,new Comparator<Integer>(){
public int compare(Integer a,Integer b){
String a1=Integer.toString(a)+Integer.toString(b);
String a2=Integer.toString(b)+Integer.toString(a);
int l =a1.length();
for(int i=0;i<l;i++){
if(a1.charAt(i)>a2.charAt(i)){
return -1;
}
else if(a1.charAt(i)<a2.charAt(i)){
return 1;
}
else continue;
}
return 0;
}
Здесь мы объединили два числа и проверили, какое из них больше. Эта логика рекурсивно применяется ко всем остальным числам в массиве, если нужно получить желаемый результат.
Подводя итоги, используйте класс Comparator для перегрузки функции compare(). Это поможет создать собственную логику сортировки и вернуть положительное значение при изменении порядка появления в массиве, и отрицательное значение или 0 при сохранении порядка.