Search code examples
javareadfilewritefile

How to read integers from file?


I want to write a program that reads numbers from both.txt file and write to even.txt if its even and to odd.txt if its odd numbers in java. i need help

i have managed to create these files

I have tried the following but its not working:

public static void main(String[] args) throws FileNotFoundException, IOException{
  File both = new File("/home/eddie/Desktop/both.txt"); 
  File odd = new File("/home/eddie/Desktop/odd.txt");      
  File even = new File("/home/eddie/Desktop/even.txt");
  
  Scanner myObj = new Scanner(System.in);
   int number,remainder;
    System.out.println("Please enter a number!");
        number = myObj.nextInt();
    
     
    try (PrintWriter pwboth = new PrintWriter(both)) {
        pwboth.println(number);
        pwboth.close(); 
    }
    remainder = number/2;
    
    if (remainder != 0)
    {
        
                
        
            try (PrintWriter pwodd = new PrintWriter(odd)) {
                pwodd.println(number);
                pwodd.close();
            }
    } 
    else if(remainder > 0)
{
      try (PrintWriter pweven = new PrintWriter(even)) {
           pweven.println(number);
           pweven.close();
        }
}
}

This code is only printing to odd.txt and both.txt even if its even number and i want the program to read numbers from the both file i just don't know how to go about it.


Solution

  • Note : The operator modulo (%) is used to get remainder value after division for Example: X % Y = Z means if X is divided by Y then it gave Z as remainder

    So the definition of ODD and EVEN

    • number % 2 != 0 for ODD
    • number % 2 == 0 for EVEN

    Here is correct code as you have posted having expected result:

    public static void main(String[] args) {
    
            //Read & Write from and To the file
    
            File file = new File("source.txt");
            File even = new File("even.txt");
            File odd = new File("odd.txt");
    
            int number = 0;
    
            try (BufferedReader reader= new BufferedReader(new FileReader(file));
                 PrintWriter evenWriter = new PrintWriter(even);
                 PrintWriter oddWriter = new PrintWriter(odd);){
    
                String text = null;
    
                while ((text = reader.readLine()) != null) {
                    number = Integer.parseInt(text) ;
    
                    if(number % 2 == 0) {
                        evenWriter.println(number);
                    }else{
                        oddWriter.println(number);
                    }
    
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
    
        }
    

    source.txt

    12
    23
    34
    45
    56
    67
    78
    89
    90
    

    even.txt

    12
    34
    56
    78
    90
    

    odd.txt

    23
    45
    67
    89