2013-08-18 143 views
0

我從循環的打印輸出中遇到了一個小問題。從循環打印輸出中刪除最後一個逗號JAVA

String str1 = null; 
for (int row=0; row<dfsa.length; row++) { 

    System.out.print("\tstate " + row +": "); 

    for (int col=0; col<dfsa[row].length; col++) { 
     for (int i=0; i<dfsa_StateList.size(); i++) { // traverse thru dfsa states list      
      if (dfsa_StateList.get(i).equals(dfsa[row][col])) { 
       str1 = alphabetList.get(col)+ " " + i + ", "; 
       System.out.print(str1); 
      } 
     }     
    }   
    System.out.println(); 
} 

解釋的代碼:橫向穿過的2D陣列(行和列),然後從每個槽,橫穿另一1D ArrayList中,如果在ArrayList的該插槽與2D陣列中的狹槽相匹配,打印從2D陣列列和該ArrayList

樣本輸出的索引:

state 0: b 1, c 2, 
    state 1: e 3, 
    state 2: a 4, 
    state 3: a 5, 
    state 4: r 6, 
    state 5: r 7, 
    state 6: e 8, 
    state 7: 
    state 8: 

1b1和的C 2是在同一行中,因爲有一排2個匹配。 我只需要用逗號分隔一行內的2個匹配項。 我曾嘗試使用子字符串,一些正則表達式在網上找到,但他們沒有工作

另外,我想顯示「無」最後2行(狀態7和8)。我一直在努力去做,但仍然沒有運氣。

請給些建議,謝謝

回答

1

與嘗試:

String str1 = null; 
for (int row=0; row<dfsa.length; row++) { 

    System.out.print("\tstate " + row +": "); 
    String line = ""; 
    for (int col=0; col<dfsa[row].length; col++) { 
     for (int i=0; i<dfsa_StateList.size(); i++) { // traverse thru dfsa states list      
      if (dfsa_StateList.get(i).equals(dfsa[row][col])) { 
       str1 = alphabetList.get(col)+ " " + i + ", "; 
       line += str1; 
      } 
     }     
    }  
    line = line.length() > 0 ? line.substring(0, line.length() - 2) : "None"; 
    System.out.println(line)  
} 
+0

太棒了,你能幫我解決第二部分嗎? (打印「無」)? – Casper

+1

我剛剛編輯了我的答案。一探究竟。 –

+0

很棒的工作,非常感謝! – Casper

0
if (dfsa_StateList.get(i).equals(dfsa[row][col])) { 
       str1 = alphabetList.get(col)+ " " + i + ", "; 
       if(str1.endsWith(",")) 
        System.out.print(str1.substring(0, str1.lastIndexOf(","))); 
       if(str1.isEmpty()) 
        System.out.print("None"); 
} 
else {//no match 
    System.out.print("None"); 
} 
+0

不工作,用 「無」 整個陣列會如果不匹配則打印 – Casper

+0

您遇到的問題是什麼? – harsh

+0

「none」無處不在 – Casper

0

可以使用

for (int col = 0; col < dfsa[row].length; col++) 
    { 
     for (int i = 0; i < dfsa_StateList.size(); i++) 
     { // traverse thru dfsa states list      
      if (dfsa_StateList.get(i).equals(dfsa[row][col])) 
      { 
       str1 = alphabetList.get(col) + " " + i + ", "; 
       if (str1.endsWith(",")) 
       { 
        int index = str1.lastIndexOf(","); 
        str1 = str1.substring(0, index); 
       } 
       if(str1.trim.isEmpty()) 
       { 
        System.out.print("None"); 
       } 
       else 
       { 
       System.out.print(str1); 
       } 
      } 
     } 
    } 
+0

我試過了,但結果是一樣的,沒有這個 – Casper

相關問題