JAVA 此处不允许声明变量
JAVA Variable declaration not allowed here
我收到一个错误 "Variable declaration not allowed here",我不知道为什么,我是 java 的新手,找不到答案:/
正如它所说,我无法在 "if" 中创建 "int" 但有没有办法创建它?
import java.io.PrintWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;import java.util.Scanner;
public class test{
public static void main(String[] args) throws FileNotFoundException{
File plik = new File("test.txt");
PrintWriter saver = new PrintWriter("test.txt");
int score = 0;
System.out.println("Q: What's bigger");
System.out.println("A: Dog B: Ant");
Scanner odp = new Scanner(System.in);
string odpo = odp.nextLine();
if(odpo.equals("a"))
int score = 1;
else
System.out.println("Wrong answer");
}
}
string
必须改为String
.
通过编写 int score
,您试图声明一个已经存在的新变量,您之前已经声明过该变量。只需删除 int
部分,您将获得所需的分配。
根据 Java 规范,您不能在没有作用域时声明局部变量。在 if 中声明 int score = 1
时,没有作用域。 http://docs.oracle.com/javase/specs/jls/se7/html/jls-6.html
A local variable, one of the following
*A local variable declared in a block
*A local variable declared in a for statement
此外,您已经在上面声明了一个名为 score
的变量。即使你删除了那个声明,你也会因为上述原因得到错误。
将 int score = 1;
更改为 score = 1;
。
解释:
我们使用
声明变量
someType variable;
为我们使用的变量赋值(或更改)值
variable = value;
我们可以将这些指令混合成一行,例如;
someType variable = value;
所以当你这样做时
int score = 1;
你先声明变量score
,然后给它赋值1
。
这里的问题是我们不能在同一个范围内有两个(或更多)同名的局部变量。所以像
int x = 1;
int x = 2;
System.out.println(x)
是不正确的,因为我们无法决定在这里应该使用哪个 x
。
同样
int x = 1;
{
int x = 2;
System.out.println(x)
}
因此,如果您只想更改已创建变量的值,请仅使用赋值,不要包含声明部分(删除类型信息)
int x = 1;
//..
x = 2;//change value of x to 2
现在是混淆部分 - 作用域的时候了。您需要了解变量有一些可以使用的地方。这个区域称为作用域,用 {
}
方括号括起变量声明。所以如果你创建像
这样的变量
{
int x = 1;
System.out.println(x); //we can use x here since we are in its scope
}
System.out.println(x); //we are outside of x scope, so we can't use it here
int x = 2;
System.out.println(x); //but now we have new x variable, so it is OK to use it
因此,由于
等地方的范围限制声明
if (condition)
int variable = 2;
else
int variable = 3;
不正确,因为这样的代码等于
if (condition){
int variable = 2;
}else{
int variable = 3;
}
因此无法在任何地方访问此变量。
如果忘记括号,也可能会出现“JAVA此处不允许声明变量”。这是因为变量需要声明一个明确的范围。
在我的例子中,我忘记了我的 OUTER 周围的括号 - for 方法内部的循环 这给了我同样的错误。
public static void InsertionSort(int[] list){
for (int i = 1 ; i < list.length ; i++)
double currentValue = list[i];
int k;
for (k = i - 1 ; k >= 0 && list[k] > currentValue ; k--){
list[k+1] = list[k];
}
// Insert the current element
list[k+1] = currentValue;
System.out.println("The sorted array is : "+Arrays.toString(list));
}
我收到一个错误 "Variable declaration not allowed here",我不知道为什么,我是 java 的新手,找不到答案:/ 正如它所说,我无法在 "if" 中创建 "int" 但有没有办法创建它?
import java.io.PrintWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;import java.util.Scanner;
public class test{
public static void main(String[] args) throws FileNotFoundException{
File plik = new File("test.txt");
PrintWriter saver = new PrintWriter("test.txt");
int score = 0;
System.out.println("Q: What's bigger");
System.out.println("A: Dog B: Ant");
Scanner odp = new Scanner(System.in);
string odpo = odp.nextLine();
if(odpo.equals("a"))
int score = 1;
else
System.out.println("Wrong answer");
}
}
string
必须改为String
.
通过编写 int score
,您试图声明一个已经存在的新变量,您之前已经声明过该变量。只需删除 int
部分,您将获得所需的分配。
根据 Java 规范,您不能在没有作用域时声明局部变量。在 if 中声明 int score = 1
时,没有作用域。 http://docs.oracle.com/javase/specs/jls/se7/html/jls-6.html
A local variable, one of the following
*A local variable declared in a block
*A local variable declared in a for statement
此外,您已经在上面声明了一个名为 score
的变量。即使你删除了那个声明,你也会因为上述原因得到错误。
将 int score = 1;
更改为 score = 1;
。
解释:
我们使用
声明变量someType variable;
为我们使用的变量赋值(或更改)值
variable = value;
我们可以将这些指令混合成一行,例如;
someType variable = value;
所以当你这样做时
int score = 1;
你先声明变量score
,然后给它赋值1
。
这里的问题是我们不能在同一个范围内有两个(或更多)同名的局部变量。所以像
int x = 1;
int x = 2;
System.out.println(x)
是不正确的,因为我们无法决定在这里应该使用哪个 x
。
同样
int x = 1;
{
int x = 2;
System.out.println(x)
}
因此,如果您只想更改已创建变量的值,请仅使用赋值,不要包含声明部分(删除类型信息)
int x = 1;
//..
x = 2;//change value of x to 2
现在是混淆部分 - 作用域的时候了。您需要了解变量有一些可以使用的地方。这个区域称为作用域,用 {
}
方括号括起变量声明。所以如果你创建像
{
int x = 1;
System.out.println(x); //we can use x here since we are in its scope
}
System.out.println(x); //we are outside of x scope, so we can't use it here
int x = 2;
System.out.println(x); //but now we have new x variable, so it is OK to use it
因此,由于
等地方的范围限制声明if (condition)
int variable = 2;
else
int variable = 3;
不正确,因为这样的代码等于
if (condition){
int variable = 2;
}else{
int variable = 3;
}
因此无法在任何地方访问此变量。
如果忘记括号,也可能会出现“JAVA此处不允许声明变量”。这是因为变量需要声明一个明确的范围。
在我的例子中,我忘记了我的 OUTER 周围的括号 - for 方法内部的循环 这给了我同样的错误。
public static void InsertionSort(int[] list){
for (int i = 1 ; i < list.length ; i++)
double currentValue = list[i];
int k;
for (k = i - 1 ; k >= 0 && list[k] > currentValue ; k--){
list[k+1] = list[k];
}
// Insert the current element
list[k+1] = currentValue;
System.out.println("The sorted array is : "+Arrays.toString(list));
}