2016-04-29 47 views
0

我正在閱讀一個文件,其中包含元素之間的分隔符。我試圖把每個元素放入一個數組的新索引中。這似乎不能正常工作,一切似乎都以陣列的一個索引結束。下面是一個示例文本文件和我的代碼。Java閱讀帶分隔符和推入數組的文本文件

TEXTFILE

%User %James %Fields %Will Smith %sBel %James %Fields %Will Smith %sBel %James %Fields %Will Smith %sBel%James %Fields %Will Smith %sBel %James %Fields %Will Smith %sBel %James %Fields %Will Smith %sBel %James %Fields %Will Smith %sBel %James %Fields %Will Smith %sBel %James %Fields %Will Smith %sBel %James %Fields %Will Smith %sBel %James %Fields %Will Smith %sBel %James %Fields %Will Smith %sBel %James %Fields %Will Smith %sBel %James %Fields %Will Smith %sBel %James %Fields %Will Smith %sBel %James %Fields %Will Smith %sBel %James %Fields %Will Smith %sBel 

代碼

final InputStream i = getResources().openRawResource(R.raw.users); 
    final Scanner s = new Scanner(i); 
    try 
    { 
     while (s.hasNextLine()) 
     { 
      String d = s.nextLine(); 
      String test; 

      test = values[1];   
      userTextArea.append(test); 
      test = ""; 
     } 
    } 
+0

我不明白你的代碼...如果你需要把它放在一個數組中,你需要把你的線和一個stringtokenizer用%作爲分隔符。然後,您需要創建一個數組String [] myStringArray = new String [tokenizer.countTokens()],以便使用找到的令牌數創建數組; –

回答

0
final InputStream i = getResources().openRawResource(R.raw.users); 
final Scanner s = new Scanner(i); 
try 
{ 
    while (s.hasNextLine()) 
    { 
     String d = s.nextLine(); 
     StringTokenizer st = new StringTokenizer(d,"%"); 
     String[] myStringArray = new String[st.countTokens()] 

     int index = 0; 
     while(st.hasMoreTokens()) { 
      myStringArray[index] = st.nextElement(); 
      index ++; 
     } 
    } 
} catch (Exception e) { 
.... 
} 
0

你必須使用分割功能。

String tmp = "%hallo %world"; 
String [] strArray = tmp.split("%"); 
System.out.print(strArray[0]); //prints hallo 
0

數組是一個容器對象,它保存存儲在唯一索引(位置)中的固定數量的值。

原因

似乎一切都結束了對數組的一個索引

它會做,爲原因:

  1. 文件你正在閱讀中沒有換行符。因此,當您撥打nextLine()時,它會將文件內容的全部分配給變量「d」。

    String d = s.nextLine(); 
    

    要澄清一下,在你的程序了這一點,「d」握着你的整個文本文件。

  2. 即使它確實有換行符,你仍然不會讀取數組中的任何內容。將字符串分配給變量「d」後。你沒有做任何事情。

建議

這樣做將是的一種方式:

  • 閱讀文件,你是,作爲一個單一的線,然後使用String 分裂( )函數來分割元素,這個函數返回一個數組,所以你需要把它分配給一個String []數組變量。 由於您只需要讀取一行,因此省略了 while循環。在此之後,循環 通過字符串數組和值附加到文本區域:

    String d = s.nextLine(); 
        String[] values = d.split("%"); 
    
        for(String value: values) { 
         userTextArea.append(value.trim()); 
        } 
    

    追加時,不要忘了,因爲你的文件中包含的元素之間的間隔要修剪的字符串。字符串trim()函數將刪除這些。