2017-02-10 30 views
-1
if (!pos[1].equals("")) { 
    String name = pos[1]; 
    System.out.println(name); 
    int p = 0; 
    for (int i = name.length() - 1; i>0; i--){ 
     if (name.charAt(i)==' ') { 
      p = i; 
      break; 
     } 
     System.out.println(p); 
     rank[1] = Integer.parseInt(name.substring(p).trim()); 
    } 
} 

在代碼中,INT p在如果塊設置爲。但是,如果在if塊外部訪問它,則值仍然保留爲而不是在if條件中設置的值i在if塊中設置變量的值。訪問值外,如果塊

+1

如果'p'應該是一個存在於'if'塊之外的變量,那麼你不應該在'if'塊中聲明它。 – khelwood

+2

我想說的最可能的情況是if語句塊沒有被輸入(或者當'i = 0'時它被觸發了,你需要給我們一個輸入示例,爲了將來的參考,範圍問題很難用這樣的格式化進行調試,因此不容易分辨出if區塊或for循環中的內容。編輯:它看起來好像突破了循環內的循環'if'塊,如果你只在'if'塊後面打印'p',在循環內,它將永遠不會打印改變。 –

+0

你得到多行的值爲'0'的更長的名字嗎?爲_every_'i'打印'p',並調用'Integer.parseInt(...)'這可能會導致異常(假設_first_字符不是空格)。你可能想要做的是執行這兩個線以下,不在裏面。 – Thomas

回答

2

如果將其設置爲與0不同的值,則永不會打印p

if(name.charAt(i)==' '){ 
    p= i; 
    break; 
} 

如果你輸入你設置的值,並打破循環的塊,所以你打印值僅如果不輸入塊,因此p仍然0