#java #algorithm
#java #алгоритм
Вопрос:
Привет, мне дали задание для моего курса, и оно заключается в создании алгоритма для создания квадрата размером 5 на 5, как показано ниже:
*****
*****
*****
*****
*****
Я потратил часы, пытаясь это сделать, и читал учебные пособия и книги. Это так расстраивает, поскольку я знаю, что это должно быть так просто, если вы знаете, что делаете. Может ли кто-нибудь дать мне какие-либо рекомендации относительно того, с чего начать?
Комментарии:
1. Домашнее задание ? вы должны опубликовать свой код и попросить о помощи … просить людей сделать это за вас не улучшит ваши навыки.
2. @gareth: Я потратил часы, пытаясь это сделать, и читал учебные пособия и книги — извините, но я не могу не думать, что вы лжете. Вам нужен
for
цикл иsystem.out.print
— эти вещи являются одними из самых первых вещей, которые рассматриваются в каждой книге и учебнике.3. Пожалуйста, объясните требования подробнее. Например, почему
system.out.printline("*****n*****n*****n*****n*****n")
неверный ответ (простите, если я неправильно запомнил синтаксис, прошло некоторое время с тех пор, как я использовал Java)4. спасибо за вашу честность в том, что это домашнее задание. большинство из нас действительно ценит это.
5. @derobert Это
System.out.println()
🙂
Ответ №1:
Вы, вероятно, знаете и понимаете, как создать программу в стиле «Hello World» на Java. Теперь подумайте — как бы вы поступили, если бы одна и та же программа печатала 5 раз «Hello World»?
После этого подумайте, как бы вы заставили его написать N раз «Привет, мир».
После этого подумайте о том, как бы вы вывели серию из N звездочек.
Удачи!
Комментарии:
1. спасибо, ребята, я вернусь к попытке завершить все это весело, думаю, мне просто нужен перерыв, и я вернусь к нему. Я не хотел, чтобы вы выполняли мою домашнюю работу, просто «руководство», еще раз спасибо
Ответ №2:
Похоже, у вас должна быть переменная x
, равная размерности (5). for
Цикл i
, который выполняется из 1-x
. В нем for
цикл j
, который выполняется из 1-x
. j
Циклы выводят *
или добавляют *
к строке. После j
цикла i
цикл создает новую строку.
Это решение позволит создавать квадратную сетку любого размера.
int size = input;
for (i=0; i<size; i ){
for (j=0; j<size; j ){
// output a single "*" here
}
// output a new line here
}
Комментарии:
1. Если вы собираетесь записать это до такой степени подробно, просто используйте псевдокод: гораздо проще понять.
2. Разве это не противоречило бы
homework
? Не уверен, как это сделать, не просто отдав его.3. Псевдокод означает код, написанный на языке, который фактически не компилируется (и может даже не быть формально определен) Таким образом, вы бы не стали писать его на Java. Например, ваш синтаксис цикла может быть «повторять размер раз» или «цикл с i от 0 до size-1». В качестве альтернативы, просто напишите это в HyperTalk, потому что тогда все будут думать, что это псевдокод:-P
4. Хорошо, попробую это в следующий раз. Спасибо.
5. О, я должен также упомянуть, что обычное использование псевдокода заключается в том, чтобы автор не имел дело с различными деталями. Например, если я пишу книгу по алгоритмам, я, возможно, не захочу иметь дело, например, со всем, что требуется для управления памятью C (потому что это затуманило бы фактический реализуемый алгоритм), или любовь Java к длинным строкам (страницы такие широкие) и т. Д. Это также потенциально делает запись более понятной для всех, потому что «добавить i в конец списка l» понятно всем, но
l.push_back(i)
(C STL) может и не быть.
Ответ №3:
Если я вас правильно понял, то речь идет о квадрате NxN с заданным N. Ваш вопрос касается только N : = 5, но ваши комментарии позволяют мне предположить, что вам нужно запрограммировать более общее решение.
Разделите работу, которую необходимо выполнить, на более простые и мелкие задачи:
- создайте a
String
, который содержит*
N раз. - вызовите System.out.println() с сгенерированной строкой N раз
Ответ №4:
Это сработает и для вас, но профессор нахмурится, что вы нашли ответ в Интернете и не додумались до него самостоятельно.
System.out.println("*****n*****n*****n*****n*****");
Комментарии:
1. Мне это нравится, но это явно не то, что он ищет, ха-ха
Ответ №5:
Вот как я это сделал:
class Main {
public static void main(String[] args) {
int size = 25;
int pos = 0;
for(int i = 0; i<size; i ){
if(pos % 5 == 0){
System.out.println();
}
System.out.print("*");
pos ;
}
}
}
Комментарии:
1. Чем ваш ответ отличается от существующих ответов?
Ответ №6:
Если я правильно понял, вам нужен консольный вывод с 5 строками звездочек. Вы можете вывести текст на консоль с System.out.print()
помощью или System.out.println()
со вторым вариантом, создающим разрыв строки.
Поскольку вам нужно повторить вывод, желательно заключить оператор вывода в цикл. Лучше во вложенном цикле разделять оси x и y.
Чтобы сделать вывод изменяемым — для случая, когда вам нужно будет завтра вывести квадрат размером 6×6 или 12×15 без каких-либо изменений кода, я бы параметризовал пределы цикла.
В общем, что-то вроде этого :
public void printStartSquare(int width, int height){
for(int i = 0; i < height;i ){
for(int j = 0; j < width;j ){
System.out.print("*");
}
System.out.println("");
}
}
Комментарии:
1. Это сделало бы квадрат размером 6×5, а не 6×6
2. @John B Нет, это не так, я это проверил. Что с понижением?
3. Голосование «Против» было за предыдущий пост, который выводил «*****», я очистил его за ваше редактирование.
4. Как указывали другие люди, публикация полного решения
homework
as, которое у вас есть, не рекомендуется.5. @John B извините за опечатку, постоянная доставка 😉