1

私は、各奇数行が整数を保持するテキストファイルを持っています(テキストファイルにあるため、もちろん文字列)。偶数行には時間がありました。私は数字だけを読みたいので、テキストファイルからの奇数行です。それ、どうやったら出来るの?

import java.io.*; 

public class File { 

BufferedReader in; 
String read; 
int linenum =12;


public File(){ 
try { 
in = new BufferedReader(new FileReader("MAP_allData.txt")); 

for (linenum=0; linenum<20; linenum++){

read = in.readLine();
if(read==null){} 
else{
System.out.println(read);  }
}
in.close(); 
}catch(IOException e){ System.out.println("There was a problem:" + e); 

} 
} 

public static void main(String[] args){ 
File File = new File(); 
} 
}

現在のところ、(null) から読み取るものがなくなるまで、すべての (奇数および偶数) 行を読み取ります。

私の偶数行はタイムスタンプな13:44:23ので、次のようなことができます

if(read==null OR if read に時刻またはセミコロンが含まれる場合){} else { SOP(read);}

4

4 に答える 4

4

すべての行を読み取り、1 行おきに無視します。

int lineNum = 0;
String line = null;
while ( (line = reader.readLine() ) != null ) {
   lineNum++;
 if ( lineNum % 2 == 0 ) continue;
   //else deal with it
}

またはreadLine()、ループごとに 2 回呼び出して、2 回目を無視し、カウンターを持たないようにします (ストリームの終わりに達した後、readLine へのすべての呼び出しが null を返すので安全です)。

編集効率が絶対に重要で、日付行が固定長形式である場合は、skip(15)または類似のものを使用して、気にしない行を効率的にスキップできます。

于 2010-11-01T19:59:40.450 に答える
2

-loop をin.readLine ()閉じる直前に単純なものを配置すると、forこれが解決されますか?

すなわち:

for (linenum=0; linenum<20; linenum++) {

    read = in.readLine();
    if(read==null){} 
    else{
        System.out.println(read);  
    }
    in.readLine ();
}
于 2010-11-01T20:00:09.450 に答える
0

すでに linecounter があるので、1 行おきに使用する場合は、モジュロ チェックを使用します。

if((linenum % 2) == 1){
     System.out.println(read);
}
于 2010-11-01T20:03:28.303 に答える
0

一行読むたびに、次のようなことを実行してください。

String str = read;
char[] all = str.toCharArray();
bool isInt = true;
for(int i = 0; i < all.length;i++) {
    if(!Character.isDigit(all[i])) {
        isInt = false;
    }
    else {
        isInt = true;
    }
}
if isInt {
    //INTEGER LINE
} else {
    //DO SOMETHING WITH THE TIME
}

これにより、コードが動的になります。テキスト ファイルが変更され、代わりに整数が異なる番号の行に表示された場合でも、コードは同じままでかまいません。

于 2010-11-01T20:04:07.963 に答える