Изучите несколько способов печати треугольников в Java с помощью циклов for.
- Автор записи
Автор: Catalin Burcea
Дата записи
- 1. введение
- 2. Построение прямоугольного треугольника
- 3. Построение Равнобедренного треугольника
- 3.1. Использование вложенных циклов for
- 3.2. Использование одного цикла for
- 4. Сложность
- 5. Заключение
- Анализ типа треугольника с использованием Java
- исправлять
- java@Cat
- Учебные материалы по изучению основ языка програvмирования Java
- Свежие комментарии
- Новые решения
- Tag Archives: вид треугольника
- e-olymp 905. Какой треугольник?
- 🔍 Видео
Видео:Определяем тип треугольника в JavaСкачать
1. введение
В этом уроке мы рассмотрим несколько способов печати треугольника на Java.
Естественно, существует много типов треугольников. Здесь мы рассмотрим только несколько из них: правый и равнобедренный треугольники.
Видео:Java для начинающих. Урок 16: Тип возвращаемого значения метода.Скачать
2. Построение прямоугольного треугольника
Прямоугольный треугольник-это самый простой тип треугольника, который мы будем изучать. Давайте быстро взглянем на результат, который мы хотим получить:
Здесь мы замечаем, что треугольник состоит из 5 рядов, каждый из которых имеет количество звезд, равное текущему номеру строки. Конечно, это наблюдение можно обобщить: для каждой строки от 1 до N мы должны вывести r звезды , где r – текущая строка и N – общее количество строк.
Итак, давайте построим треугольник, используя две петли for :
Видео:Математика это не ИсламСкачать
3. Построение Равнобедренного треугольника
Теперь давайте посмотрим на форму равнобедренного треугольника:
Что мы видим в этом случае? Мы замечаем, что, в дополнение к звездам, нам также нужно напечатать несколько пробелов для каждой строки. Итак, мы должны выяснить, сколько пробелов и звездочек мы должны напечатать для каждой строки. Конечно, количество пробелов и звездочек зависит от текущей строки.
Во-первых, мы видим, что нам нужно напечатать 4 пробела для первой строки, и, когда мы спускаемся по треугольнику, нам нужно 3 пробела, 2 пробела, 1 пробел и вообще никаких пробелов для последней строки. Обобщая, нам нужно напечатать N – r пробелы для каждой строки .
Во-вторых, сравнивая с первым примером, мы понимаем, что здесь нам нужно нечетное количество звезд: 1, 3, 5, 7…
Итак, нам нужно напечатать r x 2 – 1 звезды для каждой строки .
3.1. Использование вложенных циклов for
Основываясь на приведенных выше наблюдениях, давайте создадим наш второй пример:
3.2. Использование одного цикла for
На самом деле, у нас есть другой способ, который состоит только из одного для цикла – он использует библиотеку Apache Commons Lang 3 .
Мы собираемся использовать цикл for для перебора строк треугольника, как мы делали в предыдущих примерах. Затем мы будем использовать метод StringUtils.repeat () , чтобы сгенерировать необходимые символы для каждой строки:
Или мы можем проделать ловкий трюк с методом substring ()|/.
Мы можем извлечь методы StringUtils.repeat() выше, чтобы построить вспомогательную строку, а затем применить к ней метод String.substring () . Вспомогательная строка-это конкатенация максимального количества пробелов и максимального количества звезд, которые нам нужны для печати строк треугольника.
Глядя на предыдущие примеры, мы замечаем, что нам нужно максимальное количество N – 1 пробелов для первой строки и максимальное количество N x 2 – 1 звезды для последнего ряда:
Например, когда N и r , нам нужно напечатать ” *****”, который включен в переменную helperString . Все, что нам нужно сделать, это найти правильную формулу для метода substring () .
Теперь давайте рассмотрим полный пример:
Точно так же, немного поработав, мы могли бы перевернуть треугольник вверх ногами.
Видео:Урок Java 348: Типы referenceСкачать
4. Сложность
Если мы еще раз взглянем на первый пример, мы заметим, что внешний цикл и внутренний цикл имеют максимум N шагов. Следовательно, у нас есть O(N^2) временная сложность, где N – количество строк треугольника.
Второй пример аналогичен — с той лишь разницей, что у нас есть два внутренних цикла, которые являются последовательными и не увеличивают временную сложность.
В третьем примере, однако, используется только цикл for с N шагами. Но на каждом шаге мы вызываем либо метод StringUtils.repeat () , либо метод substring() в вспомогательной строке, каждый из которых имеет O(N) сложность. Таким образом, общая временная сложность остается прежней.
Наконец, если мы говорим о вспомогательном пространстве, мы можем быстро понять, что для всех примеров сложность остается в переменной StringBuilder . Добавляя весь треугольник к переменной result , мы не можем иметь меньше O(N^2) сложности.
Конечно, если бы мы непосредственно печатали символы, у нас была бы постоянная сложность пространства для первых двух примеров. Но в третьем примере используется вспомогательная строка, и сложность пространства будет O(N) .
Видео:Уроки Java с нуля / #4 – Переменные в Джава. Типы данныхСкачать
5. Заключение
В этом уроке мы узнали, как печатать два распространенных типа треугольников в Java.
Во-первых, мы изучили прямоугольный треугольник, который является самым простым типом треугольника, который мы можем напечатать на Java. Затем, мы исследовали два способа построения равнобедренного треугольника. Первый использует только для циклов, а другой использует преимущества метода StringUtils.repeat() и String.substring() и помогает нам писать меньше кода.
Наконец, мы проанализировали сложность времени и пространства для каждого примера.
Как всегда, все примеры можно найти на GitHub .
Видео:Java SE. Урок 6. Примитивные типы данных и литералы. Объявление и инициализация переменныхСкачать
Анализ типа треугольника с использованием Java
В приведенном ниже коде предполагается проанализировать тип треугольника на основе углов, введенных пользователем в терминале. Однако в первом операторе if, если я установил его (a+b+c==d) — все еще, в терминале, если я вхожу 180, 1, 1 — вместо остановки выполнения и печати Triangle is not possible. , вместо этого он говорит, что треугольник является равнобедренным. Это, конечно, ошибка с моей стороны. Но я нооб, поэтому, пожалуйста, исправьте мои заявления.
исправлять
Ваши проверки на то, что треугольник является равносторонним, равнобедренным и скаленом, применяются независимо от того, возможен ли треугольник или нет. Вам нужно либо добавить проверку возможности (a+b+c==d) к каждому из тех, кто использует && или вложить if/else таким образом, что они произойдут только тогда, когда префикс if (a+b+c==d) ,
Видео:Java для начинающих. Урок 30: Приведение примитивных типов данных.Скачать
java@Cat
Видео:Java. Стирание типов.Скачать
Учебные материалы по изучению основ языка програvмирования Java
Видео:Java для начинающих. Урок 12: Цикл for each, Массивы строк.Скачать
Свежие комментарии
- Игорь Мазурок к записи Обратная польская нотация
- Кирилл к записи Обратная польская нотация
- Игорь Мазурок к записи Обратная польская нотация
- Vika к записи Обратная польская нотация
- Игорь Мазурок к записи e-olymp 7612. Алекс и квадраты оригами
Видео:Java для начинающих. Урок 2: Переменные. Примитивные типы данных.Скачать
Новые решения
Видео:06 - Ссылочные типы, поля объектов, аргумент метода, java "this" - Уроки Java для начинающихСкачать
Tag Archives: вид треугольника
Видео:Java для начинающих. Урок 3: Строки(String) в Java. Ссылочные типы данных.Скачать
e-olymp 905. Какой треугольник?
Задача взята с сайта www.e-olymp.com
Условие задачи
Определить вид треугольника (равносторонний, равнобедренный, разносторонний) по заданным длинам его сторон.
Входные данные
В единственной строке задано [latex]3[/latex] целых числа – длины сторон треугольника. Длины сторон не превышают [latex]100[/latex].
Выходные данные
В единственной строке вывести [latex]1[/latex], если треугольник равносторонний, [latex]2[/latex] если равнобедренный и [latex]3[/latex] если разносторонний.
Код
№ | Входные данные | Выходные данные |
1 | 3 3 3 | 1 |
2 | 3 4 3 | 2 |
3 | 3 4 5 | 3 |
Решение
Для решения задачи нам нужно уметь определять виды треугольников. Нам даны равносторонний, равнобедренный и разносторонний треугольники. У равностороннего треугольника все стороны равны, у равнобедренного равны лишь два бедра, а у разностороннего – стороны не равны.
Для начала задаем три переменные [latex]a[/latex], [latex]b[/latex] и [latex]c[/latex], которые равны сторонам треугольника. Вводим их произвольно. Для того, чтобы определить какой это треугольник мы задаем параметры :
- если [latex]a=b=c[/latex], то есть все стороны равны, то у нас равносторонний треугольник;
- если [latex]a=b[/latex] или [latex]b=c[/latex], или [latex]a=c[/latex], то есть две из трех сторон треугольника равны, то у нас равнобедренный треугольник;
- если [latex]aneq bneq c[/latex], стороны не равны, то у нас разносторонний треугольник.
🔍 Видео
Язык программирования Java - урок №33 (Класс HashMap и интерфейс Map)Скачать
Уроки Java для начинающих | #8 - Циклы (For, While, Do while)Скачать
7. Java Примитивные литералы (теория)(Ещё один курс по: Java)Скачать
Java. Методы equals и hashCode.Скачать
Java для начинающих. Урок 29: ПолиморфизмСкачать
Java для начинающих. Урок 14: Классы и объекты.Скачать