看板 java 關於我們 聯絡資訊
各位前輩您們好: 先說明一下我的狀況,目前手上有一份DNA的資料要跑,需要將序列整理一下 他的格式如下: >1097156670763 TCGATACCTCTCCTAGCAAGCGCATTCCACTACCAAGCAACTTTCTAACAACAACTAGCAACTATTCGCACTTAACCCTTGCCCAAAAAAATCGACTTCTTTAAAAACAATTGTCGTTCCCCCGATGCGATCAAACGCTTACG CACTCCGTGCCGCTAGAGCCGCAGAAATCGCCCCGACTAGGTCGACGCCTTCCGCATGACCCACTACTAACAAGGTTATGACTGCTCTAGCCGACAGGTCACGAATACAAACCAACACACACGAAACATGCCAGAATTCGAAG ... CCGCCCCATTGACCTACACATCAAAGGGCTCAAAAAGCTCAACTGCCAAGTAGATATCTCCAACGGTTACGTCCACGTCGACGCCTCCAACATCGAAGGCGGCC >1097156670764 CTTGGGTAAATTGGTGAGCCTTATATCAAATCTGTTAAGTCTTTAGTAAAATCAAAATCTGGATTAGGTCTTGGAATTTTTATAGGAAAAACTCTACTTGAAAAAAATTATGCAAATATTTTATGTAAAAATTCCGAAACAAG AGGTGGGGCTGAAGTTCGTATTAAATGGAAAAATGAAGACCTGTTAAAGCTTTAGTGTAGTTTCTTTTTATTTTCAAATAAGCCACTCAATTGAGAAACCATCACATCTCCAAGCTCATGTACATCTGTTATTTTAATAGCTT ... CAAACTCTTTCTTCCAGAAATTTAACATTTTTGTAGACACATCATTGAGCTCTAATTTAAAGAATTTATTTAACATATATAGTTCAAAAGCTTCAGTCACAGGAACATCTTCTTTATTTTT 大約有3,000,000組 目前先跑前面十組試試 但是在輸出檔案裡卻只有印出約六組 試著在程式裡加上System.out.println來看哪裡沒讀到、沒改到 卻都沒有發現問題 再試著將資料增多 結果就可以正確的跑出該有的組數 但是將資料減少 結果輸出檔案中反而一組也沒有印出來 預計輸出格式如下: >1097156670763 TCGATACCTCTCCTAGCAAGCGCATTCCACTACCAAGCAACTTTCTAACAACAACTAGCAACTATTCGCACTTAACCCT >1097156670764 CTTGGGTAAATTGGTGAGCCTTATATCAAATCTGTTAAGTCTTTAGTAAAATCAAAATCTGGATTAGGTCTTGGAATTT 也就是將多行的序列去掉N後再將之湊成一列 -- 以下是我的程式碼 麻煩大家替我解困了 謝謝 -- import java.io.*; public class proteinTranslations { public static void main(String[] args){ try { //這裡是一些宣告,應該可以跳過 File inputFile = new File("ten.txt"); File outputFile = new File("tenGOS.txt"); FileReader fileReader = new FileReader(inputFile); BufferedReader bufferedReader = new BufferedReader(fileReader); byte[] buffer; BufferedOutputStream bufferedOut = new BufferedOutputStream(new FileOutputStream(outputFile)); int flag=0; String line="", total="", lineSep=""; lineSep = System.getProperty("line.separator"); //translating是用來去掉N用的 translating translate=null; while ((line = bufferedReader.readLine()) != null) { flag++; //以>為區分的標地,每次遇以>為開頭的一行 //便將之前整理好的total印出 //第一次除外,且最後一次total在迴圈外印出 //在用println測的時候,N都有被刪掉 //也有排成一列 //可是就是沒有輸出到檔案中 if (line.indexOf(">") == 0) { if (flag == 1) { line+=lineSep; buffer = line.getBytes(); bufferedOut.write(buffer, 0, buffer.length); } else { buffer = total.getBytes(); bufferedOut.write(buffer, 0, buffer.length); total=""; line = lineSep + line; line+=lineSep; buffer = line.getBytes(); bufferedOut.write(buffer, 0, buffer.length); } } else { translate = new translating(line, line); translate.deleteN(); total+=translate.result(); } } buffer = total.getBytes(); bufferedOut.write(buffer, 0, buffer.length); total=""; } catch (Exception e) { System.out.println("File Not Found"); } } } -- public class translating { public String original="", translated=""; int index1=0, index2=0; public translating () {} public translating (String original, String translated) { this.original = original; this.translated = translated; } public void deleteN () { //delet NNN...first original = original.replaceAll("N", ""); translated = original; } public String result () { return translated; } } -- 麻煩大家了 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.228.73.50