[英]Print Diamond Shape With Java
I want to print a grid shape on the output console in Eclipse. 我想在Eclipse的输出控制台上打印网格形状。
Basically I took an integer from user that is the number of stars in a single border of the grid. 基本上,我从用户那里得到一个整数,它是网格单个边框中的星星数。
Here the code I have up to now: 这里是我到目前为止的代码:
import java.util.Scanner;
public class PrintDiamond {
public static void main(String[] args) {
System.out.print("Enter the number: ");
Scanner scan = new Scanner(System.in);
int num = scan.nextInt();
num--;
for (int i=num; i>0; --i){
//Insert spaces in order to center the diamond
for (int n=0; n<i; ++n){
System.out.print(" ");
}
System.out.print(" *");
for (int n=i; n<num; ++n){
System.out.print(" + ");
System.out.print(" ");
}//Ending bracket of nested for-loop
System.out.println();
}//Ending bracket of for loop
//Print out a diamond shape based on user input
for (int i=0; i<=num; ++i){ //<= to print the last asterisk
//Insert spaces in order to center the diamond
for (int n=0; n<i; ++n){
System.out.print(" ");
}
System.out.print(" *");
for (int n=i; n<num; ++n){
System.out.print(" + ");
System.out.print(" ");
} //Ending bracket of nested for-loop
System.out.println();
} //Ending bracket of for loop
}
}
and the output is(for int. 6): 输出为(对于int。6):
*
* +
* + +
* + + +
* + + + +
* + + + + +
* + + + +
* + + +
* + +
* +
*
Some hints for your solution: 您的解决方案的一些提示:
w
and n
. w
和n
打印单个菱形行的方法。 This is always a good approach - reduce your complex problem to a problem with lesser complexity - in this case, by creating methods and using these eg in loops. 这始终是一个好方法-在这种情况下,通过创建方法并在循环中使用这些方法,可以将复杂的问题简化为复杂程度较小的问题。
In your method for printing a single diamond row, you will need to check if you are in an "odd" or "even" row. 在打印单个菱形行的方法中,您将需要检查您是处于“奇数”还是“偶数”行。
Ok, this looks like a school asignment, so I won't write any code. 好的,这看起来像是学校的作业,所以我不会编写任何代码。
First you need to understand and write, in pseudo-code or just plain English, what you want to do: 首先,您需要用伪代码或简单的英语来理解和编写您想做的事情:
+
or not? +
? Because right now, it seems like you haven't figured out any of that. 因为现在,您似乎还没有想到。 And if that's the case, then your problem has nothing to do with Java but rather with basic programming knowledge, which you won't get if we just code the algorith for you.
如果是这种情况,那么您的问题与Java无关,而与基本的编程知识有关,如果我们只是为您编写算法,则您将不会获得这些知识。
Here is the code: 这是代码:
public static void main(String[] args) {
System.out.print("Enter the number: ");
Scanner scan = new Scanner(System.in);
int num = scan.nextInt();
final char[][] diamond = makeDiamond(num);
for (int i = 0; i < diamond.length; i++) {
for (int j = 0; j < diamond[i].length; j++) {
System.out.print(diamond[i][j]);
}
System.out.println();
}
}
public static char[][] makeDiamond(int n) {
int width = 1 + 4 * (n - 1);
int height = 1 + 2 * (n - 1);
char[][] out = new char[height][width];
int x0 = 2 * (n - 1);
int y0 = n - 1;
for (int i = 0; i < width; i += 2) {
// Top borders
int y1 = Math.abs(y0 - i / 2);
out[y1][i] = '*';
// Bottom borders
int y2 = height - Math.abs(i / 2 - y0) - 1;
out[y2][i] = '*';
if ((x0 - i) % 4 == 0) {
// Plus signs
for (int j = y1 + 1; j < y2; j++) {
out[j][i] = '+';
}
}
}
return out;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.