首页 > 解决方案 > 将文本文件扫描成 3 个字符的子字符串

问题描述

我的任务要求我们从 covid 19 密码子序列的文本文件中读取。我已将第一行作为字符串读取。我能够将这一行转换为 3 个字符的子字符串。但是,我现在的问题是对文件的其余部分执行此操作。当我添加一个 hasNext 方法时,它似乎与我的测试线不同。

{
//Open the file
File file = new File("D://Downloads/covid19sequence.txt");
Scanner scan = new Scanner(file); String testLine = ""; String contents = ""; String codon2 = "";
double aTotal, lTotal, lPercentage; 
ArrayList<String> codonList = new ArrayList<String>();

//Read a line in from the file and assign codons via substring
testLine = scan.nextLine();
for (int i = 0; i < testLine.length(); i += 3)
{   

    String codon = testLine.substring(i, i + 3);
    codonList.add(codon);

}
while(scan.hasNext())

System.out.println(codonList); 

}

供参考,这里是测试线的输出:

[AGA、TCT、GTT、CTC、TAA、ACG、AAC、TTT、AAA、ATC、TGT、GTG、GCT、GTC、ACT、CGG、CTG、CAT、GCT、TAG]

标签: java

解决方案


使用 while(scan.hasNextLine()) 来浏览文本文件,你可以这样做:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.util.ArrayList;

public class Codons {

    public static void main(String[] args) throws FileNotFoundException {
        File file = new File("D://Downloads/covid19sequence.txt");
        Scanner scan = new Scanner(file); String testLine = ""; String contents = ""; String codon2 = "";
        double aTotal, lTotal, lPercentage; 
        ArrayList<String> codonList = new ArrayList<String>();

        //Read a line in from the file and assign codons via substring
        
        
        while(scan.hasNextLine()) {
            testLine = scan.nextLine();
            for (int i = 0; i < testLine.length(); i += 3)
            {   

                String codon = testLine.substring(i, i + 3);
                codonList.add(codon);

            }
        }
        scan.close();

        System.out.println(codonList); 

    }

}

推荐阅读