如何比较1和0它们是否相等?使用filereader

时间:2013-03-10 13:16:18

标签: java

我正在尝试编写一个Java程序,它读取文本文件中的输入并将1s与0进行比较。当1s的频率等于0s的频率时,结果是相等的。

示例:

INPUT.TXT

  

1100
  100个
  101个
  10

Output.txt的

  

等于!
  不等于!   不等于!   等于

这是我正在使用的代码:

package automata;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;


public class Main {


public static void main(String[] args) throws FileNotFoundException, IOException {
     FileReader freader = new FileReader("Input.txt");
    BufferedReader br = new BufferedReader(freader);
     try
{

    String s="";
    while((s = br.readLine()) != null)
    {
        int count = 0;
        for(int i = 0 ; i < s.length() ; i++)
        {
            if(s.charAt(i) == '0') count++;
            else if(s.charAt(i) == '1') count--;
        }
        if(count == 0) System.out.print("Equal!\n");
        else System.out.print("Not Equal! \n");
    }

} catch (FileNotFoundException e){
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}
            }
}

2 个答案:

答案 0 :(得分:2)

我就是这样做的。

import java.io.*;

public class TestFile
{
    public TestFile()
    {
        File inputFile = new File("input.txt"),
             outputFile = new File("output.txt");

        try
        {
            FileInputStream fis = new FileInputStream(inputFile);
            FileOutputStream fos = new FileOutputStream(outputFile);
            BufferedReader br = new BufferedReader(new InputStreamReader(fis));
            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos));
            String s;
            while((s = br.readLine()) != null)
            {
                int count = 0;
                for(int i = 0 ; i < s.length() ; i++)
                {
                    if(s.charAt(i) == '0') count++;
                    else if(s.charAt(i) == '1') count--;
                }
                if(count == 0) bw.append("Equal!\n");
                else bw.append("Not Equal! \n");
            }
            br.close();
            bw.close();
        } catch (FileNotFoundException e){
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

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

答案 1 :(得分:1)

如果遍历每一行的每个字符,

  • 你可以计算1或0,并将结果与​​整个字符串的长度的一半进行比较。

  • 你可以使用一个初始化为零的计数器,并为每一个计数一个,每一个计数一个,所以你可以在相同数量的零和零上得到零

另外,如果你获得了大量的数据(很多行和非常长的行),那么在你到达它之前检查一条线是否相等是有意义的(如果你在2000年有1001条线) charater line,你不需要再检查并保存了999次迭代)。