这里不允许使用JAVA变量声明
我收到一个错误“这里不允许变量声明”,我不知道为什么,我是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
局部变量,以下之一
*块中声明的局部变量
*在for语句中声明的局部变量
此外,您已经在上面声明了一个名为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; }
所以这个变量无法在任何地方访问。