public void Forx1()和public void Forx2()这两个部分修改下,改成public static void Forx1()和 public static void Forx2(),静态函数不能再上下文直接引用非静态的成员。你也可以在main函数中定义一个本类的对象,然后用这个对象去调用原来的Forx1()和Forx2()两个方法。
打印任意行数的菱形:import java.util.Scanner; public class TestObject { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入一个大于2的奇数:");// 决定打印多少行(必须是奇数)。 int row = scanner.nextInt(); int k = (row - 1) / 2;// 控制每行打印空格的个数,初始值为(行数-1)/2 int x = 1;// 控制每行打印星星的个数,初始值为1 int kb = -1;// 控制空格的变化规律,中间行之前是依次减一,之后是依次增一 int xb = 2;// 控制星星数目的变化规律,中间行之前是依次减二,之后是依次增二 for (int i = 1; i <= row; i++) {// 外层循环,控制行数 for (int j = 1; j <= k; j++) {// 内层循环,控制空格数 System.out.print(" "); } for (int h = 1; h <= x; h++) {// 内层循环,控制星星数 System.out.print("*"); } System.out.println();// 一行打印完毕要换行 if (i == (row + 1) / 2) {// 如果到了中间行,规律变化 kb = -kb; xb = -xb; } k = k + kb;// 每行空格个数的变化 x = x + xb;// 每行星星个数的变化 } } }
{
public static void main(String[] args)
{
Forx1();
Forx2();
}
public void Forx1()
{
for(int x=1;x<=4;x++)
{
for(int y=4;y>x;y--)
{
System.out.print(" ");
}
for(int z=0;z<2x-1;z++)
{
System.out.print("*");
}
System.out.println();
}
}
public void Forx2()
{
for(int x=5;x<=7;x++)
{
for(int y=4;y<x;y++)
{
System.out.print(" ");
}
for(int z=0;z<15-2x;z++)
{
System.out.print("*");
}
}
System.out.println();
}
}
{
public static void main(String[] args)
{
Forx1();
Forx2();
}
public void Forx1()
{
for(int x=1;x<=4;x++)
{
for(int y=4;y>x;y--)
{
System.out.print(" ");
}
for(int z=0;z<2x-1;z++)
{
System.out.print("*");
}
System.out.println();
}
}
public void Forx2()
{
for(int x=5;x<=7;x++)
{
for(int y=4;y<x;y++)
{
System.out.print(" ");
}
for(int z=0;z<15-2x;z++)
{
System.out.print("*");
}
}
System.out.println();
}
}
1、你在main方法中直接调用Forx1()和Forx2()是不行的,要么新建对象来调用,要么改写成static方法;
2、for(int z=0;z<2x-1;z++)是个什么鬼?2x?还是2*x?
3、Forx2()的循环里面写错了
public class TestObject { public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个大于2的奇数:");// 决定打印多少行(必须是奇数)。
int row = scanner.nextInt(); int k = (row - 1) / 2;// 控制每行打印空格的个数,初始值为(行数-1)/2
int x = 1;// 控制每行打印星星的个数,初始值为1 int kb = -1;// 控制空格的变化规律,中间行之前是依次减一,之后是依次增一
int xb = 2;// 控制星星数目的变化规律,中间行之前是依次减二,之后是依次增二 for (int i = 1; i <= row; i++) {// 外层循环,控制行数 for (int j = 1; j <= k; j++) {// 内层循环,控制空格数
System.out.print(" ");
} for (int h = 1; h <= x; h++) {// 内层循环,控制星星数
System.out.print("*");
} System.out.println();// 一行打印完毕要换行 if (i == (row + 1) / 2) {// 如果到了中间行,规律变化
kb = -kb;
xb = -xb;
} k = k + kb;// 每行空格个数的变化
x = x + xb;// 每行星星个数的变化
}
}
}