-1

split( "#")を使用して文字列の要素を出力しようとしています。#は要素を区切る文字です。私のコードは以下のとおりです(映画は印刷される文字列です):

String[] tokens = movies.split("#");
for (int i = 0; i < tokens.length; i++){
    System.out.println(tokens[i]); 
}

映画の内容は次のとおりです。

1 Skyfall#2 The Impossible#

印刷されるものは次のとおりです。

1 Skyfall
2 The Impossible
2

上記のコードを変更して、tokens.lengthの代わりに(tokens.length-1)回ループすると、次のように出力されます。

1 Skyfall
2

文字列をムービーに保存する方法は次のとおりです。これはLinkedListを使用します。この場合、lineNumbersはtrueです。numItemsは、LinkedList内のListnode <String>(別名ムービー)の量です。

String list = "";
int pos = 0;
ListNode node = head;
if (numItems == 0){
    return "Empty";
}
while (pos < numItems){
    if (lineNumbers){
        list += (pos + 1) + " ";
    }
    list += node.getData() + "#";  
    pos++;
    if (pos < numItems){
        node = node.getNext();
    }
}  
return list;

なぜその余分な数字を印刷しているのか理解できません。誰か助けてもらえますか?

4

2 に答える 2

1

完全なコードを投稿していないため、正確にするのは困難です。しかし、あなたの分割は問題ありません。

lineNumbers問題は、との間の不一致によるものだと思いますpos

于 2013-03-13T05:34:13.980 に答える
1

このコードで

 list += (pos + 1) + " ";

2回実行されています。行番号の条件を確認してください。これは、false である必要がある場合に true です。

ステートメントpos++が実行された後、2番目の条件が実行されます

if (pos < numItems){

満足できず壊れます。

だから最終的にあなたは持っています

1 スカイフォール#2 インポッシブル#2#

于 2013-03-13T05:34:21.143 に答える