2015-10-15 173 views
0

因此,我试图在if/else语句内声明一个整型变量,并在其外部打印出来。事情是这样的:Java - 打印在if语句中声明的变量

int x; 
int a = 1; 
if (a == 1) 
{ 
int x = 5; 
} 
System.out.println(x); 

这只是我想要做的,因为我不跟我有实际的代码的例子,我不想遍布重做。虽然它确实无关紧要,因为示例正是我需要的内容,只有使用不同的变量值和名称(但它仍然是一个整数)。起初我只是声明并初始化了if/else语句中的变量,但后来我被告知需要在声明之外声明它......所以我这样做了,然后在声明中初始化它,然后继续调用它在后面。不过,我仍然收到一个错误,要么说变量没有被初始化,要么给它赋值(x)然后在语句中更新它,我得到的错误是它已经被声明。任何帮助将不胜感激,谢谢。

+0

'起初我只是声明并初始化if/else语句中的变量,但后来我被告知我需要在声明之外声明它,因为变量' x'在'if'里面结束 – sam

回答

0
int x = -1; 
int a = 1; 
    if (a == 1) 
    { // here begins inner 'area' for declared variables 
    x = 5; 
    }// and here ends 
    System.out.println(x); 

好吧,我的坏!我希望他想知道为什么,并尝试用其他方式来写它,并让他因IDE错误而受到“打击”。 因此,只要你声明变量'inside',如果声明只在整个声明中可见,那么Mr. Unknown!所以基本上,如果你想在if语句中使用变量来做些事情,并且在结果之外得到结果,你需要在语句之外声明它,使它具有更广泛的可访问性!如果您有任何问题请不要犹豫,问);

P.S.注意重新声明变量,如同你试图在这里做的那样,这是讨厌的bug找到=)

+0

你应该考虑一个关于**为什么**这个修正事情的小解释性文本... – dcsohl

+0

谢谢:D看到了,我知道我应该在声明之外声明它,但是我没有知道我不应该在'x'之前有'int'前缀.....我是新来的java:D – Unknown

1

是的。局部变量在使用之前需要进行初始化。在实例变量初始化为默认值的情况下,如果您在使用前未初始化它们。

如果你对这个原因感到好奇? click here to know

即将回到你的问题再次,

因为考虑下面的情形

跟随评论。

int x; // declared with no value 
int a = 0; 
if (a == 1) // this is false 
{ 
x = 5; // this never executed 
} 
System.out.println(x); // what you are expecting to print here ? 

因此您需要使用值进行初始化。对于例如:零初始化,后来基于更改一个条件

int x=0; 
int a = 1; 
if (a == 1) 
{ 
x = 5; 
} 
System.out.println(x); 
0

的一点是,你在上面声明x。所以删除int之前xif-statement。然后它工作。

int x; 
int a = 1; 
if (a == 1) { 
    x = 5; 
} 
System.out.println(x); 

隐含一个整数与0发起如果你想确保只写

int x = 0; 

your code here 
0

X = 0之前,你的if语句简单地分配INT,然后而不是重新声明x作为一个整数等于5,在你的if语句中设置x等于5。

0

谢谢大家的回答,我意识到我犯了2个小错误,它们不允许它工作,我(在大多数尝试中)没有在if语句之前为x声明一个值,并且我有'int'在if语句内部的x前面,这导致了重新减速错误。所以是的,谢谢你的快速回答:)