2013-09-24 44 views
1
/** Read the sequence of words on INPUT, and return as a List. If LINKED, 
* use a linked representation. Otherwise, use an array representation. 
*/ 
static List<String> readList(Scanner input, boolean linked) { 
    List<String> L; 
    if (linked) { 
     L = new LinkedList<String>(); 
    } else { 
     L = new ArrayList<String>(); 
    } 
    while (input.hasNext()) { 
     L.add(input.next()); 
    } 
    for (String word : L) { 
     word = word.toLowerCase(); 
    } 
    return L; 
} 

這是我讀取文本文件中的單詞並將其作爲列表返回的代碼。但是,我想使文件中的所有單詞小寫,但toLowerCase方法不起作用。有關如何使它們全部小寫的任何建議?將列表中的單詞更改爲小寫

+0

你忘了添加字串列出 –

+0

恐怕降價並不裏面的代碼塊的工作,因此,使用**的重點將無法工作 –

+0

啊,我意識到我把**放在代碼塊內後不起作用。 –

回答

7

重新分配word將不會影響列表中包含的內容。爲什麼不要在添加到列表中時撥打toLowerCase()

while (input.hasNext()) { 
    L.add(input.next().toLowerCase()); 
} 
+0

啊,這個答案很完美!不知道你可以同時使用兩種方法。謝謝! –

2

字符串怎麼是不可變的。您需要在列表中更換它們。

for (int i = 0; i < L.length(); ++i) { 
    L.set(i, L.get(i).toLowerCase(); 
} 

或者,您可以將toLowerCase()添加到列表中。

while (input.hasNext()) { 
    L.add(input.next().toLowerCase()); 
} 
+0

這對鏈接列表表現不佳。 – arshajii

+0

@arshajii除非有人將戰爭與和平輸入掃描儀,否則這根本就不重要。 –

0

java.lang.String是不可變的。 word.toLowerCase()方法返回新的字符串,不包含在列表中。

使用此代碼吧:

1 while (input.hasNext()) { 
2 L.add(input.next().toLowerCase()); 
3 } 
相關問題