2016-04-29 46 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()函数将删除这些。