Kamal Yusuf Ответов: 2

Как нарисовать треугольник с пробелом внутри


Я хочу нарисовать треугольник знака Астерикса, который внутри пуст. Но все, что я мог сделать, это нарисовать его заполненным. Я просто хочу, чтобы внутри треугольника было пусто. У меня есть это до сих пор:
import java.util.Scanner;

public class Triangle {

	public static void main(String[] args) {

		Scanner in = new Scanner(System.in);

		System.out.print("Enter side: ");
		int side = in.nextInt();

		for (int i = 1; i <= side; i++) {
			for (int j = 1; j <= side; j++) {
				if ((i + j) > side) {
					System.out.print("*");
					System.out.print(" ");
				} else {
					System.out.print(" ");
				}
			}
			System.out.println();
		}
	}

}


Что я уже пробовал:

Я попытался нарисовать треугольник заполненным, но сделать его с пространством внутри-это проблема.

Sergey Alexandrovich Kryukov

Конечно, потому что "' - это непрозрачный символ. Что именно вы хотите увидеть насквозь, почему? :-)
—СА

Kamal Yusuf

Окей. Итак, это мой вывод после выполнения кода:
*
* *
* * *
* * * *
* * * * *
* * * * * *
Как видите, внутри треугольник заполнен. Но то, что я хочу сделать, - это сделать внутреннюю часть пустой, чтобы на диагоналях были только знаки Астерикса. *Он показывает прямоугольный треугольник, но когда он запускается на главной консоли java, он показывает треугольник, поэтому pls принимает его как треугольник, а не прямоугольный треугольник*

Patrice T

Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.

2 Ответов

Рейтинг:
2

Patrice T

Цитата:

*
* *
* * *
* * * *
* * * * *
* * * * * * 

Хорошо нарисовать фактический неправильный вывод, лучше нарисовать тот вывод, который вы хотите. Это также более информативно для нас.

Ваша задача-проанализировать проблему:
- нарисуйте треугольник, который вы хотите получить.
- запишите последовательность шагов (с количеством раз), чтобы получить результат.
- определите повторяющиеся паттерны.
- напишите программу
- используйте отладчик, чтобы понять, почему некоторые части выходят из строя, и, вероятно, как их исправить.

Вы должны научиться использовать отладчик как можно скорее. Вместо того чтобы гадать, что делает ваш код, пришло время увидеть, как он выполняется, и убедиться, что он делает то, что вы ожидаете.

Отладчик позволяет вам следить за выполнением строка за строкой, проверять переменные, и вы увидите, что есть точка, в которой он перестает делать то, что вы ожидаете.
Отладчик - Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]

Изучите один или несколько методов анализа, я рекомендую У. Е. сверху вниз Djikstra метод анализа - это хорошее начало.
https://en.wikipedia.org/wiki/Top-down_and_bottom-up_design[^]
https://en.wikipedia.org/wiki/Structured_programming[^]
https://en.wikipedia.org/wiki/Edsger_W._Dijkstra[^]
https://www.cs.utexas.edu/users/EWD/ewd03xx/EWD316.PDF[^]


Рейтинг:
1

CodeMine

найдите программу как и ожидалось

import java.util.Scanner;
public class Triangle 
{
	public static void main(String[] args) 
	{
		Scanner in = new Scanner(System.in);
		System.out.print("Enter side: ");
		int side = in.nextInt(); int s, k,i,j;
		for (  i = 1; i < side; i++) 
		{
		    for(s=20; s>=i;s--)
		     System.out.print(" ");
			for (j = 1; j <= i; j++) 
			{
			 if((j==1)|| (j==i))
			 System.out.print(" *");
			 else
			 System.out.print("  ");
		    }
			System.out.print("\n");
		}
		for(s=20; s>=i;s--)
		System.out.print(" ");
		for(k=1;k<=side;k++)
		System.out.print(" *");
	}
}



выход я нашел

Enter side: 10
                     *
                    * *
                   *   *
                  *     *
                 *       *
                *         *
               *           *
              *             *
             *               *
            * * * * * * * * * *


CHill60

Они, вероятно, уже провалили свой курс, если они ждали 2 года решения своей домашней работы :смех: