打印菱形的偶数行
Even number of line to print diamond
我想制作带星号的菱形图案,线条需要用户给定。当行数为偶数时,我无法制作钻石。这是所有代码:
import java.util.Scanner;
public class DrawDiam {
public static void main(String[] args) {
System.out.println("Please give the number of lines");
Scanner in = new Scanner(System. in );
int L = in .nextInt();
if (L < 4) {
System.exit(0);
} else {
if ((L % 2) != 0) {
int add = 1;
int numOfSpaces = L / 2;
for (int i = 1; i <= L; i++) {
for (int j = numOfSpaces; j >= 1; j--) {
System.out.print(" ");
}
for (int j = 1; j <= add; j++) {
System.out.print("*");
}
System.out.println();
if (i < (L / 2 + 1)) {
add = add + 2;
numOfSpaces = numOfSpaces - 1;
} else {
add = add - 2;
numOfSpaces = numOfSpaces + 1;
}
}
} else {
int add = 1;
int numOfSpaces = L / 2;
for (int i = 0; i <= L + 1; i++) {
for (int j = numOfSpaces; j >= 1; j--) {
System.out.print(" ");
}
for (int j = 1; j <= add - 2; j++) {
System.out.print("*");
}
System.out.println();
if (i < (L / 2 + 1)) {
add = add + 2;
numOfSpaces = numOfSpaces - 1;
} else {
add = add - 2;
numOfSpaces = numOfSpaces + 1;
}
}
}
}
}
}
所以程序要求一个数字 >=4.The 奇数部分是 运行 完美但是 L = 6 的偶数部分是这样的:
*
***
*****
*******
*****
***
*
例如 L = 6 应该显示 this:
*
***
*****
*******
*****
***
*
这是我的解决方案。你需要测试你是否通过了钻石的中间。如果你在 i==L/2
你在中间并且不增加添加或 numOfSpaces
public static void main(String[] args) {
System.out.println("Please give the number of lines");
Scanner in = new Scanner(System.in);
int L = in.nextInt();
if (L < 4) {
System.exit(0);
} else {
if ((L % 2) != 0) {
int add = 1;
int numOfSpaces = L / 2;
for (int i = 1; i <= L; i++) {
for (int j = numOfSpaces; j >= 1; j--) {
System.out.print(" ");
}
for (int j = 1; j <= add; j++) {
System.out.print("*");
}
System.out.println();
if (i < (L / 2 + 1)) {
add = add + 2;
numOfSpaces = numOfSpaces - 1;
} else {
add = add - 2;
numOfSpaces = numOfSpaces + 1;
}
}
} else {
int add = 1;
int numOfSpaces = L / 2;
for (int i = 0; i < L + 1; i++) {
for (int j = numOfSpaces; j >= 1; j--) {
System.out.print(" ");
}
for (int j = 1; j <= add - 2; j++) {
System.out.print("*");
}
System.out.println();
if (i < (L / 2)) {
add = add + 2;
numOfSpaces = numOfSpaces - 1;
}
// Edit your else block here:
else if (i > (L / 2)) {
add = add - 2;
numOfSpaces = numOfSpaces + 1;
}
// End of edit!
}
}
}
}
最后别忘了关闭Scanner,需要检测"i"什么时候是"L"的中间,去掉中间的两行之一(由例如4/2=2,所以中间就是其中的2和3)。
此代码有效:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
System.out.println("Please give the number of lines");
Scanner in = new Scanner(System. in );
int L = in .nextInt();
if (L < 4) {
System.exit(0);
} else {
int midp = (L/2)+1;
int midm = (L/2)-1;
if ((L % 2) != 0) {
int add = 1;
int numOfSpaces = L / 2;
for (int i = 1; i <= L; i++) {
for (int j = numOfSpaces; j >= 1; j--) {
System.out.print(" ");
}
for (int j = 1; j <= add; j++) {
System.out.print("*");
}
System.out.println();
if (i < (L / 2 + 1)) {
add = add + 2;
numOfSpaces = numOfSpaces - 1;
} else {
add = add - 2;
numOfSpaces = numOfSpaces + 1;
}
}
} else {
int add = 1;
int numOfSpaces = L / 2;
for (int i = 0; i <= L + 1; i++) {
if(i != midm){
for (int j = numOfSpaces; j >= 1; j--) {
System.out.print(" ");
}
for (int j = 1; j <= add - 2; j++) {
System.out.print("*");
}
System.out.println();
if(i == midp){
} else if (i < (L / 2 + 1)) {
add = add + 2;
numOfSpaces = numOfSpaces - 1;
} else {
add = add - 2;
numOfSpaces = numOfSpaces + 1;
}
}
}
}
}
in.close();
}
}
我想制作带星号的菱形图案,线条需要用户给定。当行数为偶数时,我无法制作钻石。这是所有代码:
import java.util.Scanner;
public class DrawDiam {
public static void main(String[] args) {
System.out.println("Please give the number of lines");
Scanner in = new Scanner(System. in );
int L = in .nextInt();
if (L < 4) {
System.exit(0);
} else {
if ((L % 2) != 0) {
int add = 1;
int numOfSpaces = L / 2;
for (int i = 1; i <= L; i++) {
for (int j = numOfSpaces; j >= 1; j--) {
System.out.print(" ");
}
for (int j = 1; j <= add; j++) {
System.out.print("*");
}
System.out.println();
if (i < (L / 2 + 1)) {
add = add + 2;
numOfSpaces = numOfSpaces - 1;
} else {
add = add - 2;
numOfSpaces = numOfSpaces + 1;
}
}
} else {
int add = 1;
int numOfSpaces = L / 2;
for (int i = 0; i <= L + 1; i++) {
for (int j = numOfSpaces; j >= 1; j--) {
System.out.print(" ");
}
for (int j = 1; j <= add - 2; j++) {
System.out.print("*");
}
System.out.println();
if (i < (L / 2 + 1)) {
add = add + 2;
numOfSpaces = numOfSpaces - 1;
} else {
add = add - 2;
numOfSpaces = numOfSpaces + 1;
}
}
}
}
}
}
所以程序要求一个数字 >=4.The 奇数部分是 运行 完美但是 L = 6 的偶数部分是这样的:
*
***
*****
*******
*****
***
*
例如 L = 6 应该显示 this:
*
***
*****
*******
*****
***
*
这是我的解决方案。你需要测试你是否通过了钻石的中间。如果你在 i==L/2
你在中间并且不增加添加或 numOfSpaces
public static void main(String[] args) {
System.out.println("Please give the number of lines");
Scanner in = new Scanner(System.in);
int L = in.nextInt();
if (L < 4) {
System.exit(0);
} else {
if ((L % 2) != 0) {
int add = 1;
int numOfSpaces = L / 2;
for (int i = 1; i <= L; i++) {
for (int j = numOfSpaces; j >= 1; j--) {
System.out.print(" ");
}
for (int j = 1; j <= add; j++) {
System.out.print("*");
}
System.out.println();
if (i < (L / 2 + 1)) {
add = add + 2;
numOfSpaces = numOfSpaces - 1;
} else {
add = add - 2;
numOfSpaces = numOfSpaces + 1;
}
}
} else {
int add = 1;
int numOfSpaces = L / 2;
for (int i = 0; i < L + 1; i++) {
for (int j = numOfSpaces; j >= 1; j--) {
System.out.print(" ");
}
for (int j = 1; j <= add - 2; j++) {
System.out.print("*");
}
System.out.println();
if (i < (L / 2)) {
add = add + 2;
numOfSpaces = numOfSpaces - 1;
}
// Edit your else block here:
else if (i > (L / 2)) {
add = add - 2;
numOfSpaces = numOfSpaces + 1;
}
// End of edit!
}
}
}
}
最后别忘了关闭Scanner,需要检测"i"什么时候是"L"的中间,去掉中间的两行之一(由例如4/2=2,所以中间就是其中的2和3)。
此代码有效:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
System.out.println("Please give the number of lines");
Scanner in = new Scanner(System. in );
int L = in .nextInt();
if (L < 4) {
System.exit(0);
} else {
int midp = (L/2)+1;
int midm = (L/2)-1;
if ((L % 2) != 0) {
int add = 1;
int numOfSpaces = L / 2;
for (int i = 1; i <= L; i++) {
for (int j = numOfSpaces; j >= 1; j--) {
System.out.print(" ");
}
for (int j = 1; j <= add; j++) {
System.out.print("*");
}
System.out.println();
if (i < (L / 2 + 1)) {
add = add + 2;
numOfSpaces = numOfSpaces - 1;
} else {
add = add - 2;
numOfSpaces = numOfSpaces + 1;
}
}
} else {
int add = 1;
int numOfSpaces = L / 2;
for (int i = 0; i <= L + 1; i++) {
if(i != midm){
for (int j = numOfSpaces; j >= 1; j--) {
System.out.print(" ");
}
for (int j = 1; j <= add - 2; j++) {
System.out.print("*");
}
System.out.println();
if(i == midp){
} else if (i < (L / 2 + 1)) {
add = add + 2;
numOfSpaces = numOfSpaces - 1;
} else {
add = add - 2;
numOfSpaces = numOfSpaces + 1;
}
}
}
}
}
in.close();
}
}