The*_*XDX 1 java variables int if-statement declaration
我得到一个错误"这里不允许变量声明",我不知道为什么,我是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");
}
}
Run Code Online (Sandbox Code Playgroud)
bar*_*kur 14
根据Java规范,当没有范围时,您不能声明局部变量.在声明int score = 1if的同时,没有范围.http://docs.oracle.com/javase/specs/jls/se7/html/jls-6.html
局部变量,以下之一
*块中
声明的局部变量*在for语句中声明的局部变量
您还已经声明了一个名为score上面的变量.即使您删除该声明,由于上述原因,您也会收到错误.
改成。int score = 1;score = 1;
我们使用来声明变量
someType variable;
Run Code Online (Sandbox Code Playgroud)
为变量分配(或更改)值,我们使用
variable = value;
Run Code Online (Sandbox Code Playgroud)
我们可以将这些指令混合到一行中,例如:
someType variable = value;
Run Code Online (Sandbox Code Playgroud)
所以当你这样做时
int score = 1;
Run Code Online (Sandbox Code Playgroud)
您首先声明变量score,然后分配1给它。
这里的问题是我们不能在同一范围内有两个(或更多)具有相同名称的局部变量。所以像
int x = 1;
int x = 2;
System.out.println(x)
Run Code Online (Sandbox Code Playgroud)
是不正确的,因为我们无法决定x在这里应该使用哪个。
同样关于
int x = 1;
{
int x = 2;
System.out.println(x)
}
Run Code Online (Sandbox Code Playgroud)
因此,如果您只是想更改已创建变量的值,请仅使用赋值,不要包含声明部分(删除类型信息)
int x = 1;
//..
x = 2;//change value of x to 2
Run Code Online (Sandbox Code Playgroud)
现在是时候混淆部分——范围了。您需要了解变量有一些可以使用它们的地方。该区域称为范围,并用{ }括号标记,包围变量的声明。所以如果你创建像这样的变量
{
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
Run Code Online (Sandbox Code Playgroud)
因此,由于像这样的地方的范围限制声明
if (condition)
int variable = 2;
else
int variable = 3;
Run Code Online (Sandbox Code Playgroud)
不正确,因为这样的代码等于
if (condition){
int variable = 2;
}else{
int variable = 3;
}
Run Code Online (Sandbox Code Playgroud)
所以这个变量无法在任何地方访问。