2012-11-12 152 views
1

我不完全確定這是否可以在Java中使用,但是如何使用if語句之外的if語句聲明的字符串?如果有人能夠幫助我解決這個問題,我會很感激,我一直在努力幾個小時,似乎無法得到任何工作。在if語句之外使用變量

+3

String foo; if (someCondition) { foo = "foo"; } else { foo = null; } 

或分配一個默認值(空?)聲明字符串?需要一些代碼來澄清你在問什麼! – John3136

+1

除非將其分配給在變量外部聲明的變量,否則不能。也許你可以發佈你有問題的代碼的一部分,我們可以幫助你。 –

回答

8

你不能因爲variable scope

如果您在if語句中定義變量,那麼它只會在if語句的範圍內可見,其中包括語句本身和子語句。

if(...){ 
    String a = "ok"; 
    // a is visible inside this scope, for instance 
    if(a.contains("xyz")){ 
     a = "foo"; 
    } 
} 

您應該在範圍之外定義變量,然後在if語句中更新其值。

String a = "ok"; 
if(...){ 
    a = "foo"; 
} 
+0

這將工作,但我需要使用字符串在if語句之外的if語句中定義的方式......如果這是有道理的。 – KrazyTraynz

+0

用一些默認值(如null)初始化它們,在if塊中更新它們,然後在塊外使用它們時,它們將具有正確的值;你也可以檢查它們的值是否保持默認值。 – resilva87

+0

工作,謝謝! – KrazyTraynz

2

你需要一個變量聲明分配區分。

String foo;      // declaration of the variable "foo" 
foo = "something";    // variable assignment 

String bar = "something else"; // declaration + assignment on the same line 

如果您嘗試使用聲明的變量沒有分配的值,如:

String foo; 

if ("something".equals(foo)) {...} 

你會得到一個編譯錯誤,因爲變量沒有分配任何東西,因爲它是唯一的聲明。

在你的情況,你聲明瞭一個條件塊

if (someCondition) { 
    String foo; 
    foo = "foo"; 
} 

if (foo.equals("something")) { ... } 

裏面的變量,因此它僅僅是「看得見」是塊中。您需要將該聲明移到之外並以某種方式爲其分配一個值,否則您將得到有條件的分配編譯錯誤。一個例子將是使用一個else塊:在`if`之前聲明

String foo = null; 

if (someCondition) { 
    foo = "foo"; 
}