2012-01-13 18 views
0

私は仲間の生徒のためのアプリを書いています。私はウェブサイトから情報を解析しています。私はパーサーを書くために男を払ったが、貧しい仕事をし、彼はもう助けるためにもっとお金が欲しい。だから私はそれを自分で修正しようとしています。whileループを使用して文字列配列を作成してリストとして使用する方法

xml情報を取得する抽出プログラムがあります。どのように紳士が持っていたのか、main.javaでこのように呼び出されました。

 Content1 = extractor.BusRoutes.get(1); 
     Content2 = extractor.BusRoutes.get(2); 
     Content3 = extractor.BusRoutes.get(3); 

しかし、30以上のバスがあり、それは私には固い考えではありません。だから私は、リストを構築し、それをアンドロイドのリストにするためにwhileループと配列を実行しようとしました。

public class BusRoutes extends ListActivity { 

TransitXMLExtractor extractor; 


public String[] busroutearray() 
{ 
    extractor = new TransitXMLExtractor(); 
    String[] busroutearray = new String[40];  
    int n = 0; 
    while(n != (busroutearray.length - 1)){ 
    busroutearray[n] = extractor.BusRoutes.get(n); 
    n++; 
} 
return busroutearray; 
} 








/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setListAdapter(new ArrayAdapter<String>(this,  android.R.layout.simple_list_item_1, busroutearray())); 
    getListView().setTextFilterEnabled(true); 
} 

バス私はそれを起動すると、私はいつも強制終了します。

編集すると、以前はn ++があったのですが、コードを変更すると削除されましたが、n ++ではまだ同じ効果があります。

+0

ログを貼り付けてください。 – jeet

答えて

0

あなたはカウンター(Nをインクリメントする必要があります)。だから、ループのコードは次のようになります。

for (int i = 0; n < busroutearray.length; i++) { 
    busroutearray[i] = extractor.BusRoutes.get(i); 
} 

あなたがかもしれないが:あなただけの反復処理したいとき

は、このケースでより良い
while (n != (busroutearray.length - 1)) { 
    busroutearray[n] = extractor.BusRoutes.get(n); 
    n++; 
} 

は、forループ(ビット読みやすくし、理想的です配列(example)より少し柔軟な異なるデータ構造を使用して探検したいと考えています。

0

whileループに問題があります。 "n"の値を変更しないので、無限のwhileループを実行しています。

public String[] busroutearray() 
    { 
     extractor = new TransitXMLExtractor(); 
     String[] busroutearray = new String[40];  
     int n = 0; 

     for (int n = 0; n < busroutearray.length; n++){ 
      busroutearray[n] = extractor.BusRoutes.get(n); 
     } 

    } 
0

あなたは増分していませんn、それは無限ループです。アンドロイドはANR(Application not Responding)を投げつけた。

int n = 0; 
while(n < busroutearray.length){ 
    busroutearray[n] = extractor.BusRoutes.get(n); 
    n++; 
} 

私はよく分からないけど、あなたが使用していないのはなぜ、私はBusRoutesList

Stringの一部のようなものだと思い、

String[] busroutearray = extractor.BusRoutes.toArray(new String[extractor.BusRoutes.size()]); 
関連する問題