这里不允许使用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; } 

所以这个变量无法在任何地方访问。