比较java文件中的两个字符串

比较java文件中的两个字符串,java,Java,第三年有多少女性?这是我必须做的,我对文件处理还不熟悉,所以我真的不知道如何将“f”与第三年进行比较。下面是一些我老师伪造的数据 Amath,Brandon,522442,M,2H1,2D2,S29707212893660440,AWQ2O0ECHC2D0ECHC2O0BENG2D0DFSF2D0AGLC2O0BMPM2D0APPL2OMBSNC2D0C Amber,Joelle,568328,F,4X1,4Q2,S49506069055342231,AVI4M0AMCV4U0BMDM4U0BM

第三年有多少女性?这是我必须做的,我对文件处理还不熟悉,所以我真的不知道如何将“f”与第三年进行比较。下面是一些我老师伪造的数据

Amath,Brandon,522442,M,2H1,2D2,S29707212893660440,AWQ2O0ECHC2D0ECHC2O0BENG2D0DFSF2D0AGLC2O0BMPM2D0APPL2OMBSNC2D0C
Amber,Joelle,568328,F,4X1,4Q2,S49506069055342231,AVI4M0AMCV4U0BMDM4U0BMHF4U0CSBI4U0SCH4U0A
艾米丽,235357,F,BC,S1980416478662666,CHC2D0EENG2D0FICS2O0BMPM2D0BSNC2D0CTDJ2O0ATEJ2O0ATJ2O0ATGJ2O0A
阿明,奥利弗,547733,M,4X1,4F2,S49501306471307561,BBB4M0ABOH4M0ACLN4U0BCPW4U0Beng4U0FHH4M0AMDM4U0A
卡马拉阿南坦,437254,F,2D1,3M2,S39608172892548340,CLU3E0AENG2P0BENG3C0DGPP3O0AMBF3C0DMFM2P0APAF3OMAPPL3OMB
特立尼达安德斯,674842,F,4M1,4H2,S49506264776456,英语4U0CMCV4U0BMHF4U0ASBI4U0BSCH4U0CSPH3U0ASPH4U0B
安德森,埃斯特尔,148811,F,1H1,1A2,S19803172895001864,ADA10BBTT10ACGC1D0GENG1D0BFSF1D0DMPM1D0PAI1OFASNC1D0D
安德森,许,215777,M,4I1,4J2,S49507156470662050,BAT4M0ABBB4M0BENG4C0CHZT4U0AMAP4C0BTPJ4C0A
Andresen,Kali,557484,M,4X1,4B2,S49508269053465826,GLN4OCDGLC2OCDGLN4O0DHRT3M0AMAP4C0CSBI3C0B
Andropopogiopanatakis,Jann,386122,M,4Q1,2H2,S49505126475802413
安格斯,生锈,486415,M,4L1,4X4,S49503219051102066,BBB4M0ACGR4M0BCHI4U0AENG4C0HHFA4M0AMAP4C0C
安图内斯,帕蒂,286127,F,3F1,4G2,S3960920909054824084,Avi2O7Abdi3Cacing4U0Ghnb4O0AHNC3O0BHPC3OiCHSP3M0BMBF3C0D
阿蓬特,拉克雷沙,221322,F,1A1,1H2,S198010964646014868,AVI1O0ABTT1O0CGC1D0CENG1D0DFSF1D0DMPM1D0GPAI1OFASNC1D0A
美国缅因州阿拉姆布鲁,585147,F,4D1,4X4,S49507079053410243,英语3U0CHFA4M0BHHG4M0A
Arayaz,Merlin,148728,F,4C1,4F2,S495042647478314,CGR4M0ACHI4U0ACHY4U0BCPW4U0BENG4U0AEWC4U0AMAP4C0EMBF3C0B
伯纳阿彻,571327,F,4D1,4L2,S4950508905572668,GLN4OCEENG4U0DGLC2OCEGLN4O0EHFA4M0BHHG4M0A
阿什韦尔,朱利,844262,F,4X1,2E2,S29703199052868453,AWQ2O0CCHC2C2D0DHFN2O0FMPM2D0D
Attrell,ShirlEy,153363,F,3A1,3F2,S49501062891743101,AWQ2O0DBOG4E0ABTA3O0AENG4O0FHIR3C0AMEL3EIESBI3C
艾尔斯,阿勒纳,166658,M,3A1,3F2,S39604286477376427,CHC2D0EENG2D0FICS2O0BMPM2D0BSNC2D0CTDJ2O0ATEJ2O0ATEJ2O0ATGJ2O0A
试试这个

String data="";
    System.out.println();  
    BufferedReader input = new BufferedReader(new FileReader("data.txt"));
    String items[]=new String [9];
    boolean match = false; 
    int count =0;
    while(data!=null)
    {
        data=input.readLine();
        if (data==null)
            break;
        items=data.split(",");
        if(items[6].equalsIgnoreCase(items[2] ))
        {
            match=true;
            count++;
            break;
        }
    }
    if (match==true)
    {
        System.out.println(" There are " +count+ " females are there in Year 3");
    }
    else if (match==false)
    {
        System.out.println("There are not females in Year 3");
    }
}
输出

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class ReadFile {

    public static void main(String[] args) throws IOException {
        BufferedReader input = new BufferedReader(new FileReader("data.txt"));
        String data = input.readLine();
        int sexIndex = 3;
        int yearIndex = 6;
        String femaleSex = "F";
        String year = "S3";
        int count = 0;
        while (data != null) {
            String[] chunks = data.split(",");

            if (chunks.length >= 6) { // to avoid IndexOutOfBoundException for invalid input
                if (chunks[sexIndex].equalsIgnoreCase(femaleSex) && chunks[yearIndex].equalsIgnoreCase(year)) {
                    count++;
                }
            }
            data = input.readLine();
        }

        if (count > 0)
        {
            System.out.println(" There are " +count+ " females are there in Year 3");
        }
        else
        {
            System.out.println("There are not females in Year 3");
        }
    }
}

根据评论中的讨论,if语句的正确条件应为

There are 2 females are there in Year 3
当条件允许时,你想做点什么

  • 第四个字段(数组是零基的)与“f”匹配
  • 第七个字段与“S3”匹配
  • 都是真的

    下一个


    在这里,中断指示代码从周围的循环中中断,即
    while
    循环。删除该中断,程序将实际读取文件中的所有行。

    要清楚,您的意思是要统计三年级的女生吗? 如果是这样的话(因为是作业,所以不给你确切的代码)的想法是: 阅读每一行,考虑使用更干净的版本:

        {
            match=true;
            count++;
            break;
        }
    
    拆分行并在数组中存储令牌 检查性别标记是否为女性,年份是否等于3 如果是的话,增加你的计数 对所有行执行此操作
    打印结果并退出

    我不知道如何计数以及我将如何提问你确定
    如果(项目[6]。等信号案例(项目[2])
    真的是你想要做的吗?以及“第三年”?S3?和idk的定义是什么?如果(项目[3]。等信号案例(“F”)和&if(项目[6]。等信号案例(“S3))?听起来更接近:)我现在就写一个答案Sol4me,但对我来说我得到了197?@Pokemonmaster my data.txt包含了你在问题中粘贴的所有行,是因为我有更多的人吗?哦,哈哈,谢谢,如果f是数据中的小写字母,它还会算数吗?是的,因为我们使用“equalsIgnoreCase”进行比较
        {
            match=true;
            count++;
            break;
        }
    
    while((data=input.readline())!=null){}