我想用星号制作菱形图案,并且必须由用户给出它的线条。当线数是偶数时,我有问题制作钻石。这就是所有代码:
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;
}
}
}
}
}
}
所以程序要求一个数字&gt; = 4.奇数部分运行完美,但L = 6的偶数部分出现如下:
*
***
*****
*******
*****
***
*
例如L = 6应显示this:
*
***
*****
*******
*****
***
*
答案 0 :(得分:1)
这是我的解决方案。你需要测试你是否通过了钻石的中间。如果你在(i == L / 2)你的中间并且不增加add或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;
}
在此处编辑您的其他屏幕:
else if (i > (L / 2))
{
add = add - 2;
numOfSpaces = numOfSpaces + 1;
}
编辑结束!
}
}
}
}
答案 1 :(得分:0)
不要忘记最后关闭扫描仪,你需要检测何时“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();
}
}