Discussion:
[問題] 關於string的重新給值
(时间太久无法回复)
有好多書想看
2006-11-07 04:59:32 UTC
Permalink
我寫了一個程式
基本上就是要讀一個檔 然後把檔案需要的地方 存到一個陣列裡面
我是先宣告一個String的陣列 然後再一個一個給值
可是後來印出來 全部都變成null了
請問我是那邊寫錯?
還有一次宣告一個很大的array似乎效率會不太好
請問有沒有比較好的寫法可以把我想要的東西寫進一個string的array裡?
謝謝

FileInputStream fileInputStream = new FileInputStream("D://test.txt"); //讀檔
BufferedReader br = new BufferedReader(new InputStreamReader(
fileInputStream));
while (br.ready()) {
String str = br.readLine();
String[] tokens = str.split(" ");
String[] temp1 = new String[10000]; // 此array用來儲存去掉該忽略的符號後 剩下
的文字
int i=0;
for (String token : tokens)
{
if (token.substring(0, 1).equals("%"))
System.out.print(""); // 遇到註解的時候就忽略
else if (token.equals("***********************************************"))
System.out.print(""); // 遇到分行號的時候就忽略
else if (token.substring(0, 1).equals("1"))
System.out.print(""); // 遇到數字行號的時候忽略
else {
temp1[i]=token; //想在這個地方重新給值 卻失敗
i++;
}

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.129.158.230
shooting star
2006-11-07 05:39:05 UTC
Permalink
※ 引述《Hangy (有好多書想看)》之銘言:
: 我寫了一個程式
: 基本上就是要讀一個檔 然後把檔案需要的地方 存到一個陣列裡面
: 我是先宣告一個String的陣列 然後再一個一個給值
: 可是後來印出來 全部都變成null了
: 請問我是那邊寫錯?
: 還有一次宣告一個很大的array似乎效率會不太好
: 請問有沒有比較好的寫法可以把我想要的東西寫進一個string的array裡?
: 謝謝
: FileInputStream fileInputStream = new FileInputStream("D://test.txt"); //讀檔
: BufferedReader br = new BufferedReader(new InputStreamReader(
: fileInputStream));
: while (br.ready()) {
: String str = br.readLine();
: String[] tokens = str.split(" ");
: String[] temp1 = new String[10000]; // 此array用來儲存去掉該忽略的符號後 剩下
: 的文字
: int i=0;
: for (String token : tokens)
: {
: if (token.substring(0, 1).equals("%"))
: System.out.print(""); // 遇到註解的時候就忽略
: else if (token.equals("***********************************************"))
: System.out.print(""); // 遇到分行號的時候就忽略
: else if (token.substring(0, 1).equals("1"))
: System.out.print(""); // 遇到數字行號的時候忽略
: else {
: temp1[i]=token; //想在這個地方重新給值 卻失敗
: i++;
: }

按照你的寫法用 StringTokenizer 比較好吧
另外用arraylist來把 token 給新增進去,這樣就不用一開始就宣告一個很大的陣列
改寫如下:

String str , token;
StringTokenizer tokenizer;
ArrayList<String> strList = new ArrayList();


while (br.ready())
{
str = br.readLine();
tokenizer = new StringTokenizer(str);

while(tokenizer.hasMoreTokens())
{
token = tokenizer.nextToken();
//這裡處理你那 for loop 做的事情
else
{
//這裡是你有問題的地方
strList.add(token);
}
}
}


--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.96.181

继续阅读narkive:
Loading...