討論區快速選單
知識庫快速選單
政府補助!學嵌入式+物聯網 軟體開發過程中有哪些資安漏洞?
[ 回上頁 ] [ 討論區發言規則 ]
如何將Text檔資料存入Array ?
更改我的閱讀文章字型大小
作者 : ppooii(java白木)
[ 貼文 23 | 人氣 3850 | 評價 30 | 評價/貼文 1.3 | 送出評價 9 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/7/20 下午 08:40:02
如果我想從java read一個txt檔,而且想將txt檔內的內容放在一個array內而且我只想要數字.
我想請教各位前輩我有什麼方法做
txt檔內的內容如下:
Name Examination_scores

peter 10
mary 30
daniel 45
john 54
may 13
apple 21
seven 55
keane 36
reddy 46
melody 15
maggie 16
mandy 96
matilda 16
milly 66
miya 97
alias 64
aimee 64
anne 73
但不我不懂將英文和數字分開
請各位前輩多多教導
作者 : summerly(A-Ken)
[ 貼文 10 | 人氣 5 | 評價 90 | 評價/貼文 9 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/7/21 下午 01:42:33
是不是可以利用一次讀入一行
且只將" "後面的讀入就好?!
作者 : aronlu(Aron) Java卓越專家貼文超過200則
[ 貼文 255 | 人氣 180 | 評價 2340 | 評價/貼文 9.18 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人ppooii註記此篇回應為最佳解答 2005/7/21 下午 02:45:33
>peter 10
>mary 30
>daniel 45
>john 54
>may 13
>apple 21
>seven 55
>keane 36
>reddy 46
>melody 15
>maggie 16
>mandy 96
>matilda 16
>milly 66
>miya 97
>alias 64
>aimee 64
>anne 73
>但不我不懂將英文和數字分開
>請各位前輩多多教導


使用StreamTokenizer即可

import java.io.*;

public class Jtest{
    public static void main(String[] args) {
     try {
     FileReader in = new FileReader("input.txt");
     StreamTokenizer st = new StreamTokenizer(in);
     //判斷是否讀取到檔案末端
     while (st.nextToken() != StreamTokenizer.TT_EOF) {
     //判斷所讀取到的是否為數字
     if (st.ttype == StreamTokenizer.TT_NUMBER) {
     //將所讀取到的數字(Double型態)輸出到螢幕上
     System.out.println(st.nval);
     }
     }
     in.close();
     } catch (FileNotFoundException e) {
     e.printStackTrace();
     } catch (IOException e) {
     e.printStackTrace();
     }
    }
}
作者 : ppooii(java白木)
[ 貼文 23 | 人氣 3850 | 評價 30 | 評價/貼文 1.3 | 送出評價 9 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/7/21 下午 02:50:16
import java.io.*;
public class b
{
    public static void main (String args[]) throws IOException
    {
     BufferedReader in = new BufferedReader (new FileReader("assignment _1.txt"));
     String s;
     String[] a = new String[100];
     int i = 0;
     do {
     s = in.readLine();
     a[i] = s;
     //System.out.println(a[i]);
     i++;
     }while (s != null);
     System.out.print("End of reading loop");
    }
}

我寫左個progame 將txt檔寫入去array 但是不能只寫數字進去~
作者 : aronlu(Aron) Java卓越專家貼文超過200則
[ 貼文 255 | 人氣 180 | 評價 2340 | 評價/貼文 9.18 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人ppooii註記此篇回應為最佳解答 2005/7/21 下午 06:26:56
你上面的這個程式只是將txt檔的內容一行一行的讀進
陣列中,並未對資料進行剖析


我上頭不是寫了一個能過濾數字的程式了嗎?
你只要將System.out.println()這邊的輸出函式
改為存入陣列就行了

import java.io.*;

public class Jtest{
    public static void main(String[] args) {
     int[] array = new int[100];
     int arrayIndex = 0;
    
     try {
     FileReader in = new FileReader("assignment _1.txt");
     StreamTokenizer st = new StreamTokenizer(in);
     //判斷是否讀取到檔案末端
     while (st.nextToken() != StreamTokenizer.TT_EOF) {
     //判斷所讀取到的是否為數字
     if (st.ttype == StreamTokenizer.TT_NUMBER) {
     //將讀取到的數字存入陣列中
     array[arrayIndex] = (int) st.nval;
     arrayIndex++;
     }
     }
     in.close();
     } catch (FileNotFoundException e) {
     e.printStackTrace();
     } catch (IOException e) {
     e.printStackTrace();
     }
    }
}
作者 : ppooii(java白木)
[ 貼文 23 | 人氣 3850 | 評價 30 | 評價/貼文 1.3 | 送出評價 9 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/7/21 下午 08:35:29
感謝前輩~今次我獲益良多
感謝感謝~~
作者 : ppooii(java白木)
[ 貼文 23 | 人氣 3850 | 評價 30 | 評價/貼文 1.3 | 送出評價 9 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/7/21 下午 10:56:21
import java.io.*;
public class Jtest{
public static void main(String[] args) {
int[] array = new int[100];
int arrayIndex = 0;
int i =0;
int a =0;
int b =0;
int c =0;
int d =0;
int f =0;
int g =0;
int h =0;
int j =0;
int k =0;
int l =0;
String aa = "";
String bb = "";
String cc = "";
String dd = "";
String ff = "";
String gg = "";
String hh = "";
String jj = "";
String kk = "";
String ll = "";
try {
FileReader in = new FileReader("assignment _1.txt");
StreamTokenizer st = new StreamTokenizer(in);
while (st.nextToken() != StreamTokenizer.TT_EOF) {
if (st.ttype == StreamTokenizer.TT_NUMBER) {
array[arrayIndex] = (int) st.nval;
arrayIndex++;
}
}
in.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
while(i<=99)
{
if (array[i]<11){
a++;
aa += '*';
}else if(array[i]<21){
b++;
bb += '*';
}else if(array[i]<31){
c++;
cc += '*';
}else if(array[i]<41){
d++;
dd += '*';
}else if(array[i]<51){
f++;
ff += '*';
}else if(array[i]<61){
g++;
gg += '*';
}else if(array[i]<71){
h++;
hh += '*';
}else if(array[i]<81){
j++;
jj += '*';
}else if(array[i]<91){
k++;
kk += '*';
}else if(array[i]<101){
l++;
ll += '*';
} i++;
}
System.out.println("0 -- 10 |"+a+ " |"+aa);
System.out.println("11 -- 20 |"+b+ " |"+bb);
System.out.println("21 -- 30 |"+c+ " |"+cc);
System.out.println("31 -- 40 |"+d+ " |"+dd);
System.out.println("41 -- 50 |"+f+ " |"+ff);
System.out.println("51 -- 60 |"+g+ " |"+gg);
System.out.println("61 -- 70 |"+h+ " |"+hh);
System.out.println("71 -- 80 |"+j+ " |"+jj);
System.out.println("81 -- 90 |"+k+ " |"+kk);
System.out.println("91 -- 100 |"+l+ " |"+ll);
}
}
個progame 我完成了,不知有沒有可改善的地方呢~?
作者 : ppooii(java白木)
[ 貼文 23 | 人氣 3850 | 評價 30 | 評價/貼文 1.3 | 送出評價 9 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/7/22 上午 12:33:15
各位前輩教了我那麼多東西,我問多一些東些.
.nextToken
.ttype
.nval
是什麼??而且有什麼用??
作者 : aronlu(Aron) Java卓越專家貼文超過200則
[ 貼文 255 | 人氣 180 | 評價 2340 | 評價/貼文 9.18 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人ppooii註記此篇回應為最佳解答 2005/7/22 上午 11:22:26

>各位前輩教了我那麼多東西,我問多一些東些.
>.nextToken
>.ttype
>.nval
>是什麼??而且有什麼用??


這些東西你在Java API 中就能查到
http://java.sun.com/j2se/1.4.2/docs/api/java/io/StreamTokenizer.html

StreamTokenizer是將一個串流剖析為一個個的Token
nextToken() 如字面上的意思,傳回目前的Toke並指向下一個Token
ttpye 在我們呼叫了nextToken()後所讀取到的資料會存放在這
nval 如果我們讀取到的是一個數字,這個欄位含有其值
作者 : ppooii(java白木)
[ 貼文 23 | 人氣 3850 | 評價 30 | 評價/貼文 1.3 | 送出評價 9 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/7/22 下午 03:09:09
請問我的progame 有什麼可以改進的地方呢??
怎樣可以改,可以令個progame 更加好,更加短
ARON 除了在週討論區找到你,我還有什麼方法可以找到你.
因為我希望有人可以一路幫我學習java~
作者 : aronlu(Aron) Java卓越專家貼文超過200則
[ 貼文 255 | 人氣 180 | 評價 2340 | 評價/貼文 9.18 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/7/23 上午 09:49:08
怎麼改?
如果你想把程式碼改短,把那一大串的int及String變數改用陣列
程式碼就會變短
再者我會建議用Collection取代int[] array = new int[100];
用來記錄txt檔中的數字,因為Collection是可動態改變大小
這樣就不用在意txt檔中的資料多寡

PS.建議你在寫程式時習慣加上註解,雖然程式碼短可能還好
     不過…要人純粹看程式碼來猜用意也是蠻不方便的

最後,建議你有問題還是在此發文來發問比較適當
因為這邊多的是功力高深的高手且遠勝於在下
再者直接在這發問能和大家一起討論且獲得解答的速度也會比較快
 板主 : 風月
 > Java入門一般區 - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - Java入門一般區 - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
Java入門一般區
1 洋將 2410 
2 Aron 2130 
3 Aries 1510 
4 DEMO999 1310 
5 Ben 990 
6 ramb 620 
7 ozzy 570 
8 tand 460 
9 Huah 410 
10 vindy 400 
Java入門一般區
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
0.078125