Morgan
Morgan

Reputation: 87

I am trying to count characters from a within file

What I am trying to do here is read a file and count each character. Each character should add +1 to the "int count" and then print out the value of "int count".

I hope that what I am trying to do is clear.

import java.io.*;
import java.util.Scanner;

public class ScanXan {

public static void main(String[] args) throws IOException {

    int count = 0;
    Scanner scan = null;
    Scanner cCount = null;

    try {
        scan = new Scanner(new BufferedReader(new FileReader("greeting")));

        while (scan.hasNextLine()) {
            System.out.println(scan.nextLine());
        }
    }

    finally {
        if (scan != null) {
            scan.close();
        }
    }

    try {

        cCount = new Scanner(new BufferedReader(new  FileReader("greeting")));
        while (cCount.hasNext("")) {
            count++;
        }
    }

    finally {
        if (cCount != null) {
            scan.close();
        }
    }

    System.out.println(count);

}

}

Upvotes: 1

Views: 210

Answers (4)

user4232819
user4232819

Reputation:

First of all, why would you use try { } without catch(Exception e)

BufferedReader reader = null;
try {
reader = new BufferedReader(new    FileReader("greetings.txt"));
String line = null;
String text = "";
while ((line = reader.readLine()) != null) {
     text += line;
}
int c = 0; //count of any character except whitespaces
 // or you can use what @Alex wrote
 // c = text.replaceAll("\\s+", "").length();    
for (int i = 0; i < text.length(); i++) {
    if (!Character.isWhitespace(text.charAt(i))) {
        c++;
    }
}
System.out.println("Number of characters: " +c);
} catch (IOException e) {
     System.out.println("File Not Found");
} finally {
     if (reader != null) { reader.close();
     }
}

Upvotes: 0

MChaker
MChaker

Reputation: 2649

Using java 8 Stream API, you can do it as follow

package example;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class CountCharacter {

    private static int count=0;

    public static void main(String[] args) throws IOException {
        Path path = Paths.get("greeting");
        try (Stream<String> lines = Files.lines(path, StandardCharsets.UTF_8)) {
            count = lines.collect(Collectors.summingInt(String::length));
        }
        System.out.println("The number of charachters is "+count);
    }

}

Upvotes: 1

Alex
Alex

Reputation: 132

Well if your looking for a way to count only all chars and integers without any blank spaces and things like 'tab', 'enter' etc.. then you could first remove those empty spaces using this function:

st.replaceAll("\\s+","")

and then you would just do a string count

String str = "a string";
int length = str.length( );

Upvotes: 0

singhakash
singhakash

Reputation: 7919

  1. Add a catch block to check for exception
  2. Remove the parameter from hasNext("")
  3. Move to the next token

        cCount = new Scanner(new BufferedReader(new  FileReader("greeting")));
        while (cCount.hasNext()) {
                count = count + (cCount.next()).length();
        }
    

Upvotes: 3

Related Questions