我试图在java中创建一个倒三角形,但我不知道我的代码有什么问题
public void Tr1(int height, int begin, int pos, char ch){
for (int i = 0;i < height;i++){
for (int k = height;k > height - 1 - i;k--){
System.out.print(" ");
}
for (int j = 0;j < pos;j++){
System.out.print(" ");
}
for (int v = 0;v < i*2+begin;v++){
System.out.print(ch);
}
System.out.println();
}
}
结果是:
**
****
******
********
**********
************
**************
****************
******************
********************
我想要这个
*******************
* *
* *
* *
* *
* *
* *
* *
* *
*
答案 0 :(得分:2)
已经提出了许多类似的问题,例如I'm having trouble making a diamond shape with loops
我发布了一个递归的答案,可以很容易地适应你的情况
public class InvertedTriangle {
static int iteration = 0;
public static void printDiamond(int n) {
int numberOfBlanks = n - iteration;
int numberOfStars = iteration * 2 + 1;
String blank = new String(new char[numberOfBlanks]).replace("\0", " ");
String star = new String(new char[numberOfStars]).replace("\0", "*");
String row = blank + star + blank;
iteration++;
if (iteration < n) {
printDiamond(n);
}
// printing the rows backward
System.out.println(row);
}
public static void main(String[] args) {
printDiamond(5);
}
}
打印
*********
*******
*****
***
*
在您提问编辑后更新
public class InvertedTriangle {
static int iteration = 0;
public static void printDiamond(int n) {
int numberOfBlanks = n - iteration;
int numberOfInnerBlanks = iteration > 0 ? iteration * 2 - 1 : 0;
String blank = new String(new char[numberOfBlanks]).replace("\0", " ");
String innerBlank = new String(new char[numberOfInnerBlanks]).replace("\0", " ");
String star = "*";
String row = iteration == n - 1 ? blank + new String(new char[n * 2 - 1]).replace("\0", "*") + blank : iteration > 0 ? blank + star + innerBlank + star + blank : blank + star + blank;
iteration++;
if (iteration < n) {
printDiamond(n);
}
// printing the rows backward
System.out.println(row);
}
public static void main(String[] args) {
printDiamond(10);
}
}
打印
*******************
* *
* *
* *
* *
* *
* *
* *
* *
*
答案 1 :(得分:0)
你走了?
public static void main (String[] args)
{
int height = 9; // Height of triangle
char ch = '*';
for(int currHeight = 0; currHeight <= height; currHeight++)
{
for(int space = 0; space < currHeight; space++)
{
System.out.print(" ");
}
int requiredStars = (height - currHeight) * 2 + 1;
for(int stars = 0; stars < requiredStars; stars++)
{
System.out.print(ch);
}
System.out.println();
}
}
<强>输出:强>
*******************
*****************
***************
*************
***********
*********
*******
*****
***
*
您只需操纵for循环中使用的变量即可 试图猜测你需要什么类型的三角形并不容易。
使用更好的变量命名约定而不是j, k, v
答案 2 :(得分:0)
可以重写第一个循环,因为k
没有被进一步使用。
for (int k = height; k > height - 1 - i; k--) {
for (int k = 0; k > - 1 - i; k--) {
for (int k = 0; k < 1 + i; ++k) {
但你的意思是逆,减少缩进:
for (int k = 0; k < height - 1 - i; ++k) {
我最大将是身高-1。
答案 3 :(得分:0)
一个简单的方法draw()并调用:
public class Triangle{
public static void main(String[] args){
Triangle.draw(5, "*");
}
public static void draw (int height, String st){
for (int i=0; height>i; height--){
System.out.println(new String(new char[height]).replace("\0", st));
}
}
}
结果:
*****
****
***
**
*
答案 4 :(得分:0)
您可以使用下面的draw()
方法绘制倒置的等边三角形。
当然,这不是真正的等边三角形,因为尽管所有边都有相同数量的星号。等宽字符的平均宽高比为3:5。
* * *
* *
*
import java.util.*;
public class DrawTriangle {
public static void main(String[] args) {
System.out.println(draw("*", 10));
}
public static String draw(String symbol, int side) {
StringBuilder sb = new StringBuilder();
// Top line
for (int i = side; i > 0; i--){
sb.append(symbol + " ");
}
sb.append("\n");
// Sides
for (int i = side-2; i > 0; i--){
// Left Side
for (int j = 1; j < side-i; j++) {
sb.append(" ");
}
sb.append(symbol);
// Right Side
for (int k = 1; k <= (i * 2)- 1 ; k++) {
sb.append(" ");
}
sb.append(symbol).append("\n");
}
// Bottom point
for (int i = side-1; i > 0; i--) {
sb.append(" ");
}
return sb.append(symbol).append("\n").toString();
}
}
输出
* * * * * * * * * *
* *
* *
* *
* *
* *
* *
* *
* *
*