2015-03-31 69 views
0

所以我想寫這個代碼進入另一個類來存儲信息,但我有for循環的問題,我不知道爲什麼。For循環不符合?

public static void main(String[] args) { 
     ArrayList<String> Teams = new ArrayList(); 
     Scanner input = new Scanner(System.in); 
     System.out.printf("Please Enter how many teams?\n"); 
     int x; 
     x = input.nextInt(); 
     System.out.print(x); 
     for (int i=0 ; i>=x ; i++) 
      { 
       System.out.printf("Enter the %s Team\n", x); 
       String temp; 
       temp = input.next(); 
       Team TeamNamee = new Team(temp); 
      } 
     } 

回答

3

迴路應

for (int i=0 ; i<=x ; i++) 

i小於等於x

理解循環:

for(initialization; Boolean_expression; update) 
{ 
    //Statements 
} 

初始化步驟首先執行,並且只執行一次。此步驟 允許您聲明和初始化任何循環控制變量。只要出現分號 ,您就不需要在這裏發表聲明 。

接下來,布爾表達式被評估。如果是,則執行循環體 。如果它爲假,循環的主體不執行 ,並且控制流跳轉到循環的下一個語句。

執行for循環的主體後,控制流跳轉 備份到更新語句。該語句允許您更新 任何循環控制變量。此語句可以留空,只要在布爾表達式後面出現分號爲 的分號。

所以在你的情況下(布爾表達式爲false)i不大於或等於x(如果x大於0)for循環未執行。

Source

+1

並注意,如果x <0,將導致無限循環。 – Loci 2015-03-31 07:17:07

3

更改您的for循環是這樣的:

for (int i=0 ; i<=x ; i++) 

,而不是

for (int i=0 ; i>=x ; i++) 
1

變化

for (int i=0 ; i>=x ; i++) 

for (int i=0 ; i<=x ; i++) 

所以for循環,只要我是小於或等於x

1
for(int i=x; i>=0; i--) 

,如果你想使用條件部分「大於」運行。

0

for循環更改到:的 for(int i = 0; i<=x; i++) { }

代替: for (int i=0 ; i>=x ; i++) { }

1

循環必須是:

for (int i = 1 ; i <= x ; i++) 
如果你想從1開始編號

,或者

for (int i = 0 ; i < x ; i++) 

如果你喜歡從0編號(在你當前的循環條件下i>=x從不是true如果x > 0,所以你的循環從不工作)。

也表達

System.out.printf("Enter the %s Team\n", x); 

看起來很奇怪的循環中,所以請考慮以下

System.out.printf("Enter the %d's Team\n", i); 

且對於輸出從1開始編號(關於for第一個選項),看起來似乎是更好的。