Java 将文本文件扫描为3个字符的子字符串

Java 将文本文件扫描为3个字符的子字符串,java,Java,我的作业要求我们从covid 19密码子序列的文本文件中读取。我把第一行作为字符串读了一遍。我能够将这一行转换为3个字符的子字符串。但是,我现在的问题是对文件的其余部分执行此操作。当我添加hasNext方法时,它的工作方式似乎与我的测试行不同 { //Open the file File file = new File("D://Downloads/covid19sequence.txt"); Scanner scan = new Scanner(file); String

我的作业要求我们从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); 
{
//打开文件
File File=新文件(“D://Downloads/covid19sequence.txt”);
扫描器扫描=新扫描器(文件);字符串测试行=”;字符串内容=”;字符串密码2=”;
双原子、L原子、L百分比;
ArrayList codonList=新的ArrayList();
//从文件中读取一行,并通过子字符串指定密码子
testLine=scan.nextLine();
对于(int i=0;i
}

以下是测试线的输出,以供参考:

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

使用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); 

    }

}
导入java.io.File;
导入java.io.FileNotFoundException;
导入java.util.Scanner;
导入java.util.ArrayList;
公共类密码子{
公共静态void main(字符串[]args)引发FileNotFoundException{
File File=新文件(“D://Downloads/covid19sequence.txt”);
扫描器扫描=新扫描器(文件);字符串测试行=”;字符串内容=”;字符串密码2=”;
双原子、L原子、L百分比;
ArrayList codonList=新的ArrayList();
//从文件中读取一行,并通过子字符串指定密码子
while(scan.hasNextLine()){
testLine=scan.nextLine();
对于(int i=0;i
如果使用
扫描仪
,则最好采用单独的方法,使用扫描仪逐行读取内容,并将该行拆分为3个字符的块:


静态列表读取密码(扫描仪输入){
列表密码子=新的ArrayList();
while(input.hasNextLine()){
String line=input.nextLine();

Collections.addAll(密码子,行.split(“(?我试过了,它说它的格式不正确。我不知道如何解决这个问题?@YassinHajaj我能正确粘贴它。输入文件中有多少行?你试过逐行读取这个文件吗?这就是我试图做的,将每一行转换成一个3字符的子字符串,就像我的测试行一样。有497行输入文件中的行,但据我所知,您可能并不总是知道文件有多大。我已尝试移动它。我现在将尝试此操作。我没有得到任何输出。我正在打印数组列表,以确保它们都是3个字符的子字符串。一旦我知道它转换正确,我将删除println,因为没有理由除了确保正确转换之外。@Ikefactor我试图创建一个与您提供的文件类似的文本文件。运行代码后,输出如下:[AGA、TCT、GTT、CTC、TAA、ACG、AAC、TTT、AAA].这不是你所期望的吗?我可以输出我的测试行,从第一行得到20个密码子。当我添加hasNext时,输出只有7个密码子,并且不是从第二行开始的。也许我不需要输出它,我只是想看到子字符串的分解。最后的游戏是通过文件循环找到特定的密码子并报告我将其更改为:{testLine=scan.nextLine();for(int I=0;IAGA TCT GTT CTC TAA ACG AAC TTT AAA ATC TGT GTG GCT GTC ACT CGG CTG CAT GCT TAG GAT CTG TTC TCT AAA CGA ACT TTA AAA TCT GTG TGG CTG TCA CTC GGC TGC ATG CTT AGA ATC TGT TCT CTA AAC GAA CTT TAA AAT CTG TGT GGC TGT CAC TCG GCT GCA TGC TTA GAG