Java While循环语法错误?
我正在尝试一个生成形状的Java项目,但我一直在while循环中遇到一个语法错误,我想不出来-有什么建议吗 以下是我迄今为止的代码:Java While循环语法错误?,java,syntax,while-loop,syntax-error,nested-loops,Java,Syntax,While Loop,Syntax Error,Nested Loops,我正在尝试一个生成形状的Java项目,但我一直在while循环中遇到一个语法错误,我想不出来-有什么建议吗 以下是我迄今为止的代码: public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan = new Scanner(System.in); System.out.println("Hello! I am a program that draws sh
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in);
System.out.println("Hello! I am a program that draws shapes, but YOU must tell me how big you wish me to make them!");
System.out.println("Enter shape size: ");
final int MAX_ROWS = scan.nextInt();
// DIAMOND
int spaces = 0, stars, row;
for (row = 1; row <= (MAX_ROWS + 1) / 2; row++) {
for (spaces = 0; spaces < MAX_ROWS - row; spaces++) {
System.out.print(" ");
}
for (stars = 0; stars < row; stars++) {
System.out.print("* ");
}
System.out.println("");
}
for (row = ((MAX_ROWS + 1) / 2); row < MAX_ROWS; row++) {
for (spaces = 1; spaces < row; spaces++) {
System.out.print(" ");
}
for (stars = 0; stars < MAX_ROWS - row; stars++) {
System.out.print(" *");
}
System.out.println("");
}
System.out.println("Diamond, size " + MAX_ROWS + ".");
}
// HOLLOW SQUARE
int loopVariable = 0;
private static final int MAX_ROWS
while(loopVariable < MAX_ROWS) { <--- THIS IS THE SYNTAX ERROR LINE
if(loopVariable == MAX_ROWS - 1 ||
loopVariable == 0) {
for(int x=0; x < MAX_ROWS; x++) {
System.out.print("* ");
}
} else {
for(int x=0; x < MAX_ROWS; x++ ) {
if(x == 0||x == MAX_ROWS-1) {
System.out.print("* ");
} else {
System.out.print(" ");
}
}
}
System.out.println();
System.out.println("Hollow Square, size " + MAX_ROWS + ".");
loopVariable++;
}
publicstaticvoidmain(字符串[]args){
//TODO自动生成的方法存根
扫描仪扫描=新扫描仪(System.in);
System.out.println(“您好!我是一个绘制形状的程序,但您必须告诉我您希望我制作的形状有多大!”);
System.out.println(“输入形状大小:”);
final int MAX_ROWS=scan.nextInt();
//钻石
整数空间=0,星形,行;
对于(row=1;row您没有将分号放在前一行上。错误不在while循环行上,但编译器仅在到达该行时才注意到错误
在private static final int MAX_ROWS
之后插入一个“;”,它应该可以工作
编辑:如果您计划稍后在代码中更改“MAX_ROWS”的值,则还需要从声明中删除“final”。您不能更改“final”值。此外,正如有人提到的,您需要初始化它,例如将其设置为0。您可以稍后更改它。您没有在前一行中添加分号。错误不在while循环行中,但编译器仅在到达该行时才注意到错误
在private static final int MAX_ROWS
之后插入一个“;”,它应该可以工作
编辑:如果您计划稍后在代码中更改“MAX_ROWS”的值,您还需要从声明中删除“final”。您不能更改“final”值。此外,正如有人提到的,您需要初始化它,例如将其设置为0。您可以稍后更改它。请使用分号(“;”)在前一行的末尾,如下所示:
private static final int MAX_ROWS;
在前一行的末尾放一个分号(“;”),如下所示:
private static final int MAX_ROWS;
<代码>;<代码>在您的while循环之前的行中。它位于无中的地方。<代码>;<代码> >在您的while循环之前。它在中间。我和您在同一时间发布了完全相同的东西——查看时间戳XD(顺便说一下,因为它仍然是正确答案的1)。我已经试过了,但是它给了我一个错误:标记“;”上的语法错误,{在这个标记后面应该有一个“final”int,然后尝试更改它(在代码中就是这样做的)。尝试只使用私有静态int,并确保用一个值初始化它(即“0”)。然后你可以在你的代码中更改它。我想你和我在同一时间发布了完全相同的内容--查看时间戳XD(+1,因为它仍然是正确的答案)我尝试过,但它给了我一个错误:令牌上的语法错误“;”,{在这个令牌之后你不能有一个“final”int,然后尝试更改它(这是您在代码中所做的)。尝试只使用私有静态int,并确保使用值(即“0”)初始化它。然后您可以稍后在代码中更改它