【发布时间】:2017-04-05 11:06:57
【问题描述】:
我在一个项目上需要一些帮助,我想创建一个 java 程序来创建一种三角形的直方图,它很难解释所以看下面的例子
input : 3 1 12 0 7
output:
_
/|\
/ | \
/ | \
/ | \
/ | \ _
/ | \ /|\
/ | \ / | \
/ | \ / | \
_ / | \ / | \
/|\ / | \ / | \
/ | \ _ / | \ / | \
/ | \ /|\ / | \ _ / | \
<=======><===><=========================><=><===============>
| | | | | | | | |
在我的代码中,我设法创建了输入部分和基础的生成器,但是三角形/piramides 生成器没有生成正确的空间,有人可以帮助我吗? 这是我制作三角形的代码(假设输入是数组 numbers 和 numbers2 中的内容):
public class Spires{
public static void main(String[] args){
int[] numbers = {3,1,12,0,7};
int counter = 6, max = 12;
int[] numbers2 = {3,1,12,0,7};
for(int row = max+1; row >= 0; --row) {
System.out.println();
for(int col = 0; col < counter-1; ++col) {
if(numbers2[col] >= row){
for(int spacesleft = 1; spacesleft < (numbers2[col] + col)+row-1; ++spacesleft){
System.out.print(" ");
}
if(numbers2[col] != row){
System.out.print("/");
for(int c3 = 0; c3 < numbers2[col]-row-1; ++c3) {
System.out.print(" ");
}
System.out.print("|");
for(int c3 = 0; c3 < numbers2[col]-row-1; ++c3) {
System.out.print(" ");
}
System.out.print("\\");
}else{
System.out.print("_");
}
// for(int spacesright = 1; spacesright < numbers2[col] + col + row -1; ++spacesright){
// System.out.print(" ");
// }
}
}
}
System.out.println();
//base generator
for(int i = 0; i<counter-1; ++i) {
System.out.print("<");
for(int i2 = 0; i2 < 2*numbers[i]+1; ++i2) {
System.out.print("=");
}
System.out.print(">");
}
System.out.println();
for(int i = 0; i<counter-1; ++i) {
if(numbers[i] != 0){
System.out.print(" |");
for(int i2 = 0; i2 < 2*numbers[i]-1; ++i2) {
System.out.print(" ");
}
System.out.print("| ");
}else{
System.out.print(" | ");
}
}
}
}
我的输出是这样的:
_
/|\
/ | \
/ | \
/ | \
/ | \ _
/ | \ /|\
/ | \ / | \
/ | \ / | \
_ / | \ / | \
/|\ / | \ / | \
/ | \ _ / | \ / | \
/ | \/|\ / | \ _ / | \
<=======><===><=========================><=><===============>
| | | | | | | | |
我需要一些帮助来弄清楚如何添加缺失的空格并删除一些
【问题讨论】:
-
我会使用 StringBuilder 和 List of Strings 从下往上构建直方图。创建直方图后,我会以相反的顺序打印列表。我对您的建议是将您的单体代码分解为方法。为底线、最后一条线和三角形线创建一个方法。既然你说你的问题是三角形线的间距,那么你要调试的代码就会少很多。