Java 新手一名, HELP !!!

File mapfile = new File(MAP_FILE_NAME);
                        InputStreamReader streamReader = new InputStreamReader(new FileInputStream(mapfile));
                        BufferedReader br = new BufferedReader(streamReader);
                        String line = "";
                        allvertex=new ArrayList<>();
                        while (line != null ){
                            line = br.readLine();
                            allvertex.add(line);
                        }
                        for (int i =0; i<allvertex.size();i++ ){
                            if(allvertex.get(i) == "@"){allvertex.remove(i);}
                            if(allvertex.get(i) == null ){allvertex.remove(i);}
                        }


以上code 係想read 一個text file ga 內容 放入去  arraylist 備用
Text File 入面係D 文字來 格式如下:
A
B
C
@
D
E
F
G
@

我read 個text file 放入 arraylist 個part 冇咩問題 print 出來用 text file 一樣
但我想 remove 左 "@" 去 but, 佢好似 ckeck 唔到有 "@" 係個 list 度remove 唔到.......

HELP ME ! Thx!~

if(allvertex.get(i) == "@")

if(allvertex.get(i).equals("@")){

TOP

IC 原來是這樣
Thx  a lot ching

TOP

本帖最後由 henrywho 於 2012-4-9 20:41 編輯
if(allvertex.get(i) == "@")

if(allvertex.get(i).equals("@")){
DickyCheng 發表於 2012-4-8 18:43


1) 用 "@".equals(allvertex.get(i)) 會更好.

2) 你本來咁寫都得, 不過次序有問題:
if(allvertex.get(i).equals("@")){allvertex.remove(i);}
if(allvertex.get(i) == null ){allvertex.remove(i);}

TOP

點解唔係readLine度睇清楚先放入去list

當用"==" 比較object(物件)時, 係比較兩者係唔係相同object
而String字串, 即使內容一樣, 但可能係2個唔同既instance
所以要用String.equals...

((new String) == (new String())   : false
("" == new String()) : false
("" == "") : 應該係true, 呢個好似係javac做野既方法

TOP

concept都好似有問題:如果有2個連續既@

0 1 2 3 4 5 6 7 8 9
A B C @ @ D E F G @




當loop到i=3, 你del左個@
變成

0 1 2 3 4 5 6 7 8
A B C @ D E F G @

之後,你就做i=4...咁個@就無remove到

TOP

concept都好似有問題:如果有2個連續既@

0 1 2 3 4 5 6 7 8 9
A B C @ @ D E F G @



當loop到i=3, 你de ...
tonyli1212 發表於 2012-4-13 15:28

當成功做 remove時, 將 i 相應減番1
一係用 foreach

TOP

點解唔係readLine度睇清楚先放入去list

當用"==" 比較object(物件)時, 係比較兩者係唔係相同object
而Stri ...
mbitsa 發表於 2012-4-10 07:20


呢個係java落後ge地方, C# Python 就顯得比較聰明

TOP

本帖最後由 tuyylihk 於 2012-4-16 10:18 編輯

回復 7# garrodran99
其實只要將個i++放入loop入面就得
remove個陣唔行個行
唔駛又加又減咁累贅

TOP

本帖最後由 mbitsa 於 2012-4-16 13:01 編輯

回復 8# garrodran99


    其實我指用
  1. allvertex.add(line);
複製代碼
之後先check check好似下面個for loop
即係
  1. line = br.readLine();
  2. if(line == null || line.equals("@")) {
  3.   continue;
  4. }
複製代碼
另外, 樓主個while 可以寫好dd...即係
  1. while((line = br.readLine()) != null) {
複製代碼
就唔怕出現line = null
ps. 因為無用ide, 有錯請見諒(我太依懶eclipse了 XD )

TOP