处理一个java程序,该程序应该将偶数作为输入,并打印出带空格的星号符号的星形图案。我有一个6输入,但没有更高,并没有线索为什么。
我的代码:
package starpattern;
import java.util.Scanner;
public class StarPattern {
public static void main(String[] args)
{
int rows, cols;
Scanner keyboard = new Scanner(System.in);
System.out.print("How many columns? ");
cols = keyboard.nextInt();
if (cols%2 == 0)
{
int col2 = cols;
int spaces = (cols/2 - 1);
int ASTS = 2;
int test = (col2/2);
while (cols > (col2/2))
{
for (int x = spaces; x > 0; x--)
{
System.out.print(" ");
}
for (int y = ASTS; y > 0; y--)
{
System.out.print("*");
}
for (int z = spaces; z > 0; z --)
{
System.out.print(" ");
}
System.out.println();
cols--;
ASTS +=2;
spaces--;
}
spaces = (cols/2 - 1);
while (cols > 0)
{
if (test != (col2/2))
{
for (int x = spaces; x < (cols/2); x++)
{
System.out.print(" ");
}
spaces -=2;
}
for (int a = ASTS-2; a > 0; a--)
{
System.out.print("*");
}
test++;
System.out.println();
cols--;
ASTS -= 2;
}
}
}
}
每一步(10,12,......)都有某种形式的同一问题。有没有办法可以在下半部分解决这个问题(从&#34开始;而cols&gt; 0&#34;)这样它可以提供正确的空格输出?
答案 0 :(得分:2)
------智能编码------良好的编码器
**Very Simplest Way To create Paramid use only three loops**
D:\ Java&gt; java ParamidExample 输入一个数字 5
*
* * *
* * * * *
* * * * * * *
* * * * * * *
* * * * *
* * *
*
import java.util.*;
public class ParamidExample
{
public static void main(String args[])
{
System.out.println("Enter a number");
Scanner sc=new Scanner(System.in);
int no=sc.nextInt();
int count=1;
for(int i=1;i<=2*no-1;i++)
{
for(int j=count;j<=no;j++)
{
System.out.print(" ");
}
for(int k=1;k<=count*2-1;k++)
{
System.out.print("* ");
}
if(i<no)
count++;
else
count--;
System.out.println("");
}
}
}
非常简单的方法创建Paramid只使用三个循环
答案 1 :(得分:0)
我试图找到你在代码中实际做的事情,但它有点矫枉过正:)。也许你的反向方法完全错了,它只是硬编码才能用于6号。
但是我很感激你的努力,我可以告诉你,如何更好地写它。这是Java中完全可用的代码:
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
System.out.print("How many rows? ");
int rows = keyboard.nextInt();
triangle(rows);
triangleReversed(rows);
}
private static void triangle(int n) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n - i - 1; j++) {
System.out.print(" ");
}
for (int j = 0; j < i * 2 + 1; j++) {
System.out.print("*");
}
System.out.println("");
}
}
private static void triangleReversed(int n) {
for (int i = n-1; i >= 0; i--) {
for (int j = 0; j < n - i - 1; j++) {
System.out.print(" ");
}
for (int j = 0; j < i * 2 + 1; j++) {
System.out.print("*");
}
System.out.println("");
}
}
使用此示例输出:
How many rows? 12
*
***
*****
*******
*********
***********
*************
***************
*****************
*******************
*********************
***********************
***********************
*********************
*******************
*****************
***************
*************
***********
*********
*******
*****
***
*
请注意,将程序分成方法以提高可读性是很好的。另请注意,方法triangle和triangleReversed几乎完全相同,它只在第一行上有所不同。